0
我有一个类年和一类产品:添加同一项目不同的对象在EF
public class Year
{
#region Properties
public int Nr { get; set; }
public virtual ICollection<Item> Item { get; private set; }
#endregion
#region Constructors
public Year()
{
Item = new HashSet<Item>();
}
public Year(int year) : this()
{
Nr = year;
}
#endregion
}
public partial class Item
{
#region Properties
public string Name { get; set; }
#endregion
#region Constructors
public Item()
{
}
public Item(string name): this()
{
Name = name;
}
#endregion
}
年度类有0.1 *的项目。在初始化程序中创建项目和年份时,只有year4包含项目。目前我找不到任何解释。
protected override void Seed(MyContext context)
{
try
{
Year year1 = new Year(1);
Year year2 = new Year(2);
Year year3 = new Year(3);
Year year4 = new Year(4);
Year year5 = new Year(5);
Year year6 = new Year(6);
Item africa = new Item("Afrika");
Item antarctica = new Item("Antarctica");
Item azie = new Item("Azië");
Item europa = new Item("Europa");
Item noordAmerika = new Item("Noord-Amerika");
Item zuidAmerika = new Item("Zuid-Amerika");
Item oceanie = new Item("Oceanië");
year1.Item.Add(europa);
year2.Item.Add(europa);
year3.Item.Add(europa);
year3.Item.Add(africa);
year3.Item.Add(antarctica);
year3.Item.Add(azie);
year3.Item.Add(noordAmerika);
year3.Item.Add(zuidAmerika);
year3.Item.Add(oceanie);
year4.Item.Add(europa);
year4.Item.Add(africa);
year4.Item.Add(antarctica);
year4.Item.Add(azie);
year4.Item.Add(noordAmerika);
year4.Item.Add(zuidAmerika);
year4.Item.Add(oceanie);
context.Years.Add(year1);
context.Years.Add(year2);
context.Years.Add(year3);
context.Years.Add(year4);
context.Years.Add(year5);
context.Years.Add(year6);
context.SaveChanges();
}
这里是我的本命年映射:
//Properties
HasKey(t => t.Nr);
//Table
ToTable("Year");
//Relationships
HasMany(t => t.Item)
.WithRequired()
.Map(m => m.MapKey("ItemName"))
.WillCascadeOnDelete(false);
什么特别奇怪的是,如果我用上面的设置,只year4有项目。如果我从初始化程序中删除year4,则year3仅包含项目。等..
好了,这是完全预料。一个'Item'有1'Year',由'.WithRequired()'配置,所以去年获胜。你真正想要的是一个多对多的关联。 –