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

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

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

      冠軍

      導航

      Entity Framework 4.1 之四:復雜類型

      原文名稱:Entity Framework 4.1: Complex Types (4)

      原文地址:http://vincentlauzon.wordpress.com/2011/04/13/entity-framework-4-1-complex-types-4/

      看到 Entity Framework 4.1 推薦英文教程,為了幫大家看起來方便一些,簡單翻譯一下。這是一個系列,共有 8 篇,這是第 4 篇。
       
      1. Entity Framework 4.1 之一 : 基礎
      2. Entity Framework 4.1 之二 : 覆蓋默認的約定
      3. Entity Framework 4.1 之三 : 貪婪加載和延遲加載
      4. Entity Framework 4.1 之四:復雜類型
      5. Entity Framework 4.1 之五:多對多的關系
      6. Entity Framework 4.1 之六:樂觀并發
      7. Entity Framework 4.1 之七:繼承
      8. Entity Framework 4.1 之八:繞過 EF 查詢映射
      這篇文章將討論復雜類型。

      默認情況下,EF4.1 將類映射到表,這是約定,但是有時候,我們需要模型比表的粒度更細一些。

      地址是一個典型的例子,看一下下面的客戶類。

      publicclass Client
      {
      publicint ClientID { get; set; }
      [Required]
      [StringLength(
      32, MinimumLength=2)]
      publicstring ClientName { get; set; }
      public Address ResidentialAddress { get; set; }
      public Address DeliveryAddress { get; set; }
      }

      publicclass Address
      {
      [Required]
      publicint StreetNumber { get; set; }
      [Required]
      [StringLength(
      32, MinimumLength=2)]
      publicstring StreetName { get; set; }
      }

      我們不希望其中的兩個地址屬性都映射到地址表中的記錄,而是讓 EF4.1 都映射到一張表中,將地址展開,如何做到呢?可以通過復雜類型。

      像我們前面看到的,我們總是通過標簽或者模型構建器來覆蓋默認約定。我提到過,當我們豐富業務模型的時候,例如必填項,我建議使用屬性。現在我考慮將類中的復雜屬性映射到表中的字段,所以這里不是用標簽,而是使用模型構建器。

      protectedoverridevoid OnModelCreating(DbModelBuilder modelBuilder)
      {
      base.OnModelCreating(modelBuilder);

      modelBuilder.Entity
      <Client>().Property(x => x.ClientID)
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
      modelBuilder.ComplexType
      <Address>();
      modelBuilder.Entity
      <Client>().Property(i => i.ResidentialAddress.StreetNumber).HasColumnName("ResStreetNumber");
      modelBuilder.Entity
      <Client>().Property(i => i.ResidentialAddress.StreetName).HasColumnName("ResStreetName");
      modelBuilder.Entity
      <Client>().Property(i => i.DeliveryAddress.StreetNumber).HasColumnName("DelStreetNumber");
      modelBuilder.Entity
      <Client>().Property(i => i.DeliveryAddress.StreetName).HasColumnName("DelStreetName");

      }

      首先,我指定 client-id 作為自動增長的標識列。然后,指定 Address 是復雜類型。如果愿意的話,也可以將 [ComplexType] 標簽加到類上來說明。然后,使用 Lambda 表達式將每一個子屬性映射到列上,這將會生成如下的表。

      現在,可以使用模型了。

      using (var context1 =new MyDomainContext())
      {
      var client
      =new Client
      {
      ClientName
      ="Joe",
      ResidentialAddress
      =new Address
      {
      StreetNumber
      =15,
      StreetName
      ="Oxford"
      },
      DeliveryAddress
      =new Address
      {
      StreetNumber
      =514,
      StreetName
      ="Nolif"
      }
      };
      context1.Clients.Add(client);

      context1.SaveChanges();
      }
      using (var context2 =new MyDomainContext())
      {
      var clients
      = from w in context2.Clients
      where w.ClientName =="Joe"
      select w;

      foreach (var client in clients)
      {
      Console.WriteLine(
      "client residential StreetNumber: "+ client.ResidentialAddress.StreetNumber);
      Console.WriteLine(
      "client residential StreetName: "+ client.ResidentialAddress.StreetName);
      Console.WriteLine(
      "client delivery StreetNumber: "+ client.DeliveryAddress.StreetNumber);
      Console.WriteLine(
      "client delivery StreetName: "+ client.DeliveryAddress.StreetName);
      }
      }

      對于復雜類型,最值得注意的是空的管理。即使復雜類型的所有屬性都是可空的,你也不能將整個復雜類型的對象設為 null, 例如,在這種情況下,即使街道的名稱和街道的號碼不是必填的,也不能有一個住宅的地址為 null,需要創建一個所有屬性都是 null 的地址對象來表示。同樣的道理,當你獲取一個實體的時候,即使所有的屬性都是 null ,EF4.1 也將會創建一個復雜類型的對象。

      posted on 2011-05-07 23:16  冠軍  閱讀(13561)  評論(14)    收藏  舉報

      主站蜘蛛池模板: 国产一区二区一卡二卡| 国产精品人成视频免费播放| 精品亚洲国产成人痴汉av| 四虎永久精品在线视频| 日韩一区二区黄色一级片| 中文字幕无码av不卡一区| 国产精品女生自拍第一区| 丁香五月网久久综合| 乱人伦中文视频在线| 亚洲2022国产成人精品无码区 | 欧美精品v国产精品v日韩精品| 东京热大乱系列无码| 中文字幕亚洲资源网久久| 无码熟妇αⅴ人妻又粗又大| 国产中文99视频在线观看| 亚洲一区二区三区蜜桃臀| 日本精品极品视频在线| 亚洲综合一区二区三区| 福利成人午夜国产一区| 峨眉山市| 日韩精品福利一二三专区| 国产不卡精品视频男人的天堂 | 精品婷婷色一区二区三区| 国产精品一区 在线播放| 偷拍专区一区二区三区| 精品中文人妻中文字幕| 亚洲无人区码一二三区别| 高清无码午夜福利视频| 久久精品国产熟女亚洲av| 最新日韩精品中文字幕| 亚洲精品免费一二三区| 亚洲色av天天天天天天| 1769国内精品视频在线播放| 精品精品亚洲高清a毛片| 国产精品无码av不卡| 国精产品999国精产品官网| 日韩av无码一区二区三区| 日本一高清二区视频久二区| 国产av无码专区亚洲av软件| 狠狠色噜噜狠狠狠狠av不卡| 欧美人与动人物牲交免费观看|