спасибо за внимание.Во время разработки бухгалтерской программы я столкнулся с постоянной проблемой, и мне нужны некоторые инженеры-помощники.
Мне нужно лиц: Продукт и единица
[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 () произошла непредвиденная ошибка
Введение ограничения FOREIGN KEY 'FK_Products_Units_SubsidiaryUnitId' в таблице 'Products' может привести к циклам или нескольким каскадным путям.Укажите «УДАЛИТЬ НЕТ ДЕЙСТВИЙ» или «ОБНОВИТЬ НЕТ ДЕЙСТВИЙ» или измените другие ограничения «ИНОСТРАННЫЙ КЛЮЧ».
Кто-нибудь может мне помочь ?!Правильно ли я использовал сопоставление InverProperty и сопоставление ForeignKey?
спасибо, ребята
Foroughi