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()'配置,所以去年獲勝。你真正想要的是一個多對多的關聯。 –