【发布时间】:2012-01-29 03:49:23
【问题描述】:
感谢关注。 在开发会计程序的过程中,我遇到了一个流动的问题,需要一些工程师的帮助。
我要实体:Product和unit
[Table("Products")]
public class Product
{
#region Properties
private int _Id;
[Key]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
public int Id
{
get { return _Id; }
set { _Id = value; }
}
private string _Name;
[Required]
[MaxLength(50)]
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private string _Code;
[Required]
[MaxLength(20)]
public string Code
{
get { return _Code; }
set { _Code = value; }
}
private int _MainUnitId;
[Required]
public int MainUnitId
{
get { return _MainUnitId; }
set { _MainUnitId = value; }
}
private int _SubsidiaryUnitId;
[Required]
public int SubsidiaryUnitId
{
get { return _SubsidiaryUnitId; }
set { _SubsidiaryUnitId = value; }
}
private int _SnachUnitId;
[Required]
public int SnachUnitId
{
get { return _SnachUnitId; }
set { _SnachUnitId = value; }
}
private decimal _SubidiaryCount;
[Required]
public decimal SubidiaryCount
{
get { return _SubidiaryCount; }
set { _SubidiaryCount = value; }
}
private decimal _SnachCount;
[Required]
public decimal SnachCount
{
get { return _SnachCount; }
set { _SnachCount = value; }
}
#endregion Proerties
#region Navigators
private Unit _MainUnit;
[ForeignKey("MainUnitId")]
public virtual Unit MainUnit
{
get { return _MainUnit; }
set { _MainUnit = value; }
}
private Unit _SubsidiaryUnit;
[ForeignKey("SubsidiaryUnitId")]
public virtual Unit SubsidiaryUnit
{
get { return _SubsidiaryUnit; }
set { _SubsidiaryUnit = value; }
}
private Unit _SnachUnit;
[ForeignKey("SnachUnitId")]
public virtual Unit SnachUnit
{
get { return _SnachUnit; }
set { _SnachUnit = value; }
}
#endregion Navigators
}
这是我的单位实体:
[Table("Units")]
public class Unit
{
private int _Id;
[Key]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
public int Id
{
get { return _Id; }
set { _Id = value; }
}
private string _Title;
[Required]
[MaxLength(50)]
public string Title
{
get { return _Title; }
set { _Title = value; }
}
private ICollection<Product> _MainUnitedProducts;
[InverseProperty("MainUnit")]
public virtual ICollection<Product> MainUnitedProducts
{
get { return _MainUnitedProducts; }
set { _MainUnitedProducts = value; }
}
private ICollection<Product> _SubsidiaryUnitedProducts;
[InverseProperty("SubsidiaryUnit")]
public virtual ICollection<Product> SubsidiaryUnitedProducts
{
get { return _SubsidiaryUnitedProducts; }
set { _SubsidiaryUnitedProducts = value; }
}
private ICollection<Product> _SnachUnitedProducts;
[InverseProperty("SnachUnit")]
public virtual ICollection<Product> SnachUnitedProducts
{
get { return _SnachUnitedProducts; }
set { _SnachUnitedProducts = value; }
}
}
如你所见,我在这些实体之间存在一对多的关系:
Product.MainUnitId *-----1 Unit.Id
Product.SubsidiaryUnitId *-----1 Unit.Id
Product.SnachUnitId *-----1 Unit.Id
但是当我使用 Context.Database.Create() 时发生意外错误
在表“Products”上引入 FOREIGN KEY 约束“FK_Products_Units_SubsidiaryUnitId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
有没有人可以帮助我?! 我使用 InverProperty 映射和 ForeignKey 映射对吗?
谢谢大家
福罗伊
【问题讨论】:
-
对不起,我的语法不好,我是英文新手,任何细节评论我更新我的q,谢谢
标签: c# entity-framework code-first