![](/img/trans.png)
[英]Insert/Update Many-to-many relationship with Entity Framework in disconnected enviroment
[英]Entity Framework : many to many relationship , Insert and update
我有一個新聞實體,並且根據他們的NewsID獲得新聞。 然后我定義了一個新實體,一個Group,我想根據他們的Group ID獲取新聞。 我試圖解決這個(多對多)使用關系, 本文通過使用代碼第一種方法。
所以在我的上下文中,我添加了:
public class Groupnews : DbContext
{
public DbSet<Group> Group { get; set; }
public DbSet<News> News { get; set; }
public Groupnews()
: base("MyDb")
{
}
public int NewsID { get; set; }
}
this.HasMany(t => t.News)
.WithMany(t => t.Groups)
.Map(m =>
{
m.ToTable("GroupNews");
m.MapLeftKey("GroupID");
m.MapRightKey("NewsID");
});
現在,我可以使用此方法基於他們的GroupID獲取新聞。 但是問題在於插入新的新聞和更新。為此,我需要將NewsID和GroupId保存在GroupNews表中。 為此。 在我定義的新聞模型中:
public virtual ICollection<Group> RelatedGroups { get; set; }
public News()
{
RelatedGroups = new List<Group>();
}
和組相同:
public virtual ICollection<News> RelatedNews { get; set; }
public Group()
{
RelatedNews = new List<News>();
}
在我的新聞控制器中,添加:
Group group = new Group();
group.RelatedNews.Add(news);
但沒有任何更新,並且NewsID沒有添加到我的GroupNews表中。
您不應單獨定義GroupNews。 意思是,您不應在項目中定義GroupNews
類。 你所要做的使用獨立協會(名單CRUD操作News
的Group
類的列表和Group
在News
類)。 這是您的班級樣子:
public class Group
{
...
public Group()
{
this.News = new List<News>();
}
public virtual ICollection<News> News {get;set;}
}
public class News
{
...
public News()
{
this.Group = new List<Group>();
}
public virtual ICollection<Group> Groups {get;set;}
}
public class MyContext : DbContext
{
public DbSet<Group> Groups { get; set; }
public DbSet<News> News { get; set; }
}
然后,您可以使用myGroup.News.Add(myNewsItem)
或myNews.Groups.Add(myGroup)
。 實體框架將自動處理插入。 請注意,如果要為關聯啟用延遲加載,則應使用virtual
關鍵字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.