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();