C# EF多对多储蓄问题
我有一个数据库表:C# EF多对多储蓄问题,c#,entity-framework,C#,Entity Framework,我有一个数据库表: Item{ItemId ...} Item{BoardId ...} ItemsInBoards{ItemId, BoardId, CreatedOnDate} 我的应用程序中有一个模型 public class Item { public int ItemId{get;set;} ... public virtual ICollection<Board> Boards { get; set; } } public class Board { public i
Item{ItemId ...}
Item{BoardId ...}
ItemsInBoards{ItemId, BoardId, CreatedOnDate}
我的应用程序中有一个模型
public class Item
{
public int ItemId{get;set;}
...
public virtual ICollection<Board> Boards { get; set; }
}
public class Board
{
public int BoardId{get;set;}
...
public virtual ICollection<Item> Items { get; set; }
}
它已保存,但没有
CreatedOnDate
。我不知道如何设置CreatedOnDAte
字段以将其保存到数据库中。这不是多对多关系。您需要两个一对多关系,并且必须将ItemsInBoards
作为模型实体公开:
public class Item
{
public int ItemId{get;set;}
...
public virtual ICollection<ItemInBoard> ItemsInBoard { get; set; }
}
public class Board
{
public int BoardId{get;set;}
...
public virtual ICollection<ItemInBoard> ItemsInBoard { get; set; }
}
public class ItemInBoard
{
[Key, Column(Order = 1)]
public int ItemId{get;set;}
[Key, Column(Order = 2)]
public int BoardId{get;set;}
public DateTime CreatedOnDate{get;set;}
public virtual Item Item{get;set;}
public virtual Board Board{get;set;}
}
有关此类车型的更多详细信息,请参见:谢谢。我认为我不需要为这个中间表建立模型。如果您添加的属性多于外键,那么您确实需要显式地添加它
public class Item
{
public int ItemId{get;set;}
...
public virtual ICollection<ItemInBoard> ItemsInBoard { get; set; }
}
public class Board
{
public int BoardId{get;set;}
...
public virtual ICollection<ItemInBoard> ItemsInBoard { get; set; }
}
public class ItemInBoard
{
[Key, Column(Order = 1)]
public int ItemId{get;set;}
[Key, Column(Order = 2)]
public int BoardId{get;set;}
public DateTime CreatedOnDate{get;set;}
public virtual Item Item{get;set;}
public virtual Board Board{get;set;}
}
var newItemInBoard = new ItemInBoard
{
ItemId = model.ItemId,
BoardId = model.BoardId,
CreatedOnDate = DateTime.Now
};
con.ItemsInBoard.Add(newItemInBoard);
con.SaveChanges();