<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Entity Framework 實(shí)踐系列 —— 搞好關(guān)系 - 同事之間(多對(duì)多,many-to-many)

      單相思(單向一對(duì)一)兩情相悅(雙向一對(duì)一) 到 生兒育女(一對(duì)多),這是人生的一項(xiàng)使命 —— 成家。

      人生還有另一項(xiàng)使命 —— 立業(yè)。它不是一個(gè)人的事情,也不是兩個(gè)人的事情,它需要很多志同道合的人并肩作戰(zhàn)。與你并肩作戰(zhàn)的人叫作同事,同事之間的關(guān)系是雙向的,你和他是同事,同時(shí)他和你也是同事,你有很多同事,你的同事也有很多同事。這就是“多對(duì)多”關(guān)系。

      再回到博客的應(yīng)用場景,文章(BlogPost)與分類(Category)之間也是“多對(duì)多”有關(guān)系:

      一篇文章(BlogPost)可以屬于多個(gè)分類,一個(gè)分類(Category)可以包含多篇文章。

      類圖:

      BlogPost類的定義:

      public class BlogPost
      {
      public int ID { get; set; }
      public string Title { get; set; }
      public int BlogID { get; set; }
      public virtual BlogSite BlogSite { get; set; }
      public virtual ICollection<Category> Categories { get; set; }
      }

      Category類的定義:

      public class Category
      {
      public int ID { get; set; }
      public string Title { get; set; }
      public virtual ICollection<BlogPost> BlogPosts { get; set; }
      }

      數(shù)據(jù)庫表結(jié)構(gòu)及關(guān)系:

      BlogPost_Category是外鍵表,用于存儲(chǔ)BlogPost與Category的多對(duì)多關(guān)系。

      那我們?nèi)绾卧贓ntity Framework中定義這種關(guān)系呢?請(qǐng)看代碼:

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

      HasMany表示一篇文章關(guān)聯(lián)多個(gè)分類,WithMany表示這些分類也分別關(guān)聯(lián)著多篇文章。你有很多同事,你的同事也有很多同事。

      ToTable("BlogPost_Category")表示在BlogPost_Category表中找關(guān)系。

      MapLeftKey("BlogPostID")與MapRightKey("CategoryID")表示BlogPost要通過BlogPostID找到與自己有關(guān)系的人的CategoryID,然后再通過這個(gè)CategoryID找到這個(gè)人。Category與之相反。

      應(yīng)用場景測試

      場景一:獲取一篇文章,并同時(shí)得到它所屬的分類

      LINQ查詢:

      public BlogPost GetBlogPost(int blogPostId)
      {
      return _blogPostRepository.Entities
      .Include(p
      => p.Categories)
      .FirstOrDefault(p
      => p.ID == blogPostId);
      }

      測試代碼:

      [TestMethod]
      public void GetBlogPost_Test()
      {
      var p
      = _aggBlogSiteService.GetBlogPost(1);
      Assert.IsNotNull(p);
      Console.WriteLine(
      "BlogPost:" + p.Title);
      Console.WriteLine(
      "Categories:");
      p.Categories.ToList().ForEach
      (
      c
      => Console.WriteLine("Category:" + c.Title)
      );
      }

      測試結(jié)果:

      實(shí)際執(zhí)行的SQL:

      場景二:獲取一個(gè)分類,并得到它所包含的文章

      LINQ查詢:

      public Category GetCategory(int categoryId)
      {
      return _categoryRepository.Entities
      .Include(c
      => c.BlogPosts)
      .FirstOrDefault(c
      => c.ID == categoryId);
      }

      測試代碼:

      [TestMethod]
      public void GetCategory_Test()
      {
      var category
      = _aggBlogSiteService.GetCategory(1);
      Assert.IsNotNull(category);
      Console.WriteLine(
      "Category:" + category.Title);
      Console.WriteLine(
      "BlogPosts:");
      category.BlogPosts.ToList().ForEach
      (
      p
      => Console.WriteLine("BlogPost:" + p.Title)
      );
      }

      測試結(jié)果:

      實(shí)際執(zhí)行的SQL:

      測試通過!

      多對(duì)多關(guān)系看起來復(fù)雜,但只要處理好了,一點(diǎn)也不復(fù)雜。

      就像同事關(guān)系,雖然人越來越多,但只要目標(biāo)一致,齊心協(xié)力,相處起來就很簡單。

      posted @ 2011-07-09 20:49  dudu  閱讀(13094)  評(píng)論(30)    收藏  舉報(bào)
      主站蜘蛛池模板: 人妻中文字幕亚洲精品| 人妻体内射精一区二区三四| 少妇高潮太爽了在线视频| 国产午夜精品久久精品电影| 日本午夜精品一区二区三区电影| 少妇伦子伦情品无吗| 日韩av一区二区三区在线| 国产成人亚洲综合色婷婷秒播| 97欧美精品系列一区二区| 亚洲精品一区二区三区蜜| 久久精品不卡一区二区| 丰满人妻被黑人猛烈进入| 色综合久久夜色精品国产| 国产精品中文字幕二区| 亚洲国产精品一区二区视频| 国产成人毛片无码视频软件| 日韩精品国产另类专区| 加勒比无码人妻东京热| 久久精品免视看国产成人| 亚洲精品麻豆一二三区| 91久久偷偷做嫩草影院免费看| 亚洲鸥美日韩精品久久| 亚洲鸥美日韩精品久久| 亚洲色成人一区二区三区 | 国产中文字幕在线一区| av无码小缝喷白浆在线观看| 亚洲爆乳成av人在线视菜奈实 | 日韩美女视频一区二区三区| 久久高清超碰AV热热久久| 玩弄漂亮少妇高潮白浆| 国产区一区二区现看视频| 漂亮人妻被修理工侵犯 | 国产精品无遮挡猛进猛出| 精品人妻系列无码人妻漫画| 操操操综合网| 国产精品天堂蜜av在线播放| 午夜夜福利一区二区三区| 白丝乳交内射一二三区| 国产丰满麻豆videossexhd | 中文字幕亚洲综合第一页| 亚洲丰满老熟女激情av|