Entity Framework 實體關係

Entity Framework 實體關係總結

通過 Entiy Framework實踐系列 文章,理了理 Entity Framework 的實體關係。

爲什麼要寫文章來理清這些關係?的教訓啊,剛開始使用 Entity Framework 的時候,由於沒有靜下心來認真理清關係,走了一些"痛不欲生"的彎路。而我們目前開發的項目都在使用 Entity Framework,爲了避免其他人再經歷"痛不欲生"的彎路。於是下定決心邊理清關係寫博客。而寫博客可以逼着自己把問題完整地解決,避免半途而廢。當寫出這些文章,自己不知不覺對問題有了更深的理解。

溫故而知新,通過這篇總結將自己對EF實體關係的理解回鍋熱一熱,也許會有新的收穫;感情也一樣,當感情冷下來的時候,別忘了回鍋熱一熱。

clip_image002

1. 一對一關係(one-to-one

a) 單向一對一(文章鏈接

類圖:

clip_image004

數據庫表結構:

clip_image005

Entity Framework中實體關係的定義:

modelBuilder.Entity<BlogSite>()
    .HasRequired(b =&gt; b.BlogUser)
    .WithMany()
    .HasForeignKey(b =&gt; b.UserID);

b) 雙向一對一(文章鏈接

類圖:

clip_image007

數據庫表結構:

clip_image009

Entity Framework中實體關係的定義:

modelBuilder.Entity<BlogSite>()
    .HasRequired(b =&gt; b.BlogUser)
    .WithMany()
    .HasForeignKey(b =&gt; b.UserID);

modelBuilder.Entity<BlogUser>()
    .HasRequired(u =&gt; u.BlogSite)
    .WithMany()
    .HasForeignKey(u =&gt; u.BlogID);

2. 一對多關係(one-to-many文章鏈接

類圖:

clip_image011

數據庫表結構:

clip_image012

Entity Framework中實體關係的定義:

modelBuilder.Entity<BlogSite>()
    .HasMany(b =&gt; b.BlogPosts)
    .WithRequired(p =&gt; p.BlogSite);

3. 多對多關係(many-to-many文章鏈接

類圖:

clip_image014

數據庫表結構:

clip_image015

Entity Framework中實體關係的定義:

modelBuilder.Entity<BlogPost>()
    .HasMany(b =&gt; b.Categories)
    .WithMany(c =&gt; c.BlogPosts)
    .Map
    (
        m =&gt;
        {
            m.MapLeftKey(
"BlogPostID");
            m.MapRightKey(
"CategoryID");
            m.ToTable(
"BlogPost_Category");
        }
    );

》點擊查看原文...

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章