内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

ADO.NETEntityFramework-CodeFisrt(二)-創(chuàng)新互聯(lián)

Code First 可以自動(dòng)根據(jù)Model 映射來(lái)創(chuàng)建數(shù)據(jù)庫(kù),這點(diǎn)非常方便。 但是按照上一節(jié)的方式創(chuàng)建的表,會(huì)發(fā)現(xiàn),所有字符串列都是nvarchar(max),就是說(shuō)每個(gè)model的屬性映射的表列都是采用CodeFist 默認(rèn)的設(shè)置進(jìn)行創(chuàng)建。 這當(dāng)然不科學(xué),CodeFirst 提供了數(shù)據(jù)注釋?zhuān)―ata Annotation) 的方式來(lái)標(biāo)記每個(gè)模型的屬性與表之間的映射。

成都創(chuàng)新互聯(lián)長(zhǎng)期為數(shù)千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏(yíng)平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為友好企業(yè)提供專(zhuān)業(yè)的做網(wǎng)站、網(wǎng)站制作,友好網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
    1. Convention for key : 主鍵映射
    2. Convention for string properties :字符串屬性映射
    3. Convention for Byte Array : 字節(jié)數(shù)據(jù)映射
    4. Convention for Booleans : 布爾類(lèi)型映射
    5. Convention for One-to-Many ReleationShips : 一對(duì)多映射
Convention for key[Key]標(biāo)記為主鍵,默認(rèn)是把類(lèi)名+ID 的屬性標(biāo)記為主鍵
Convention for string properties[maxLength(N)]
[minLength(N)]

[Required]
字符大長(zhǎng)度,映射到數(shù)據(jù)庫(kù)
字符最小長(zhǎng)度,CodeFirst 中檢查,不映射到數(shù)據(jù)庫(kù)
必填
(字符串都映射為nvarchar(n),默認(rèn)設(shè)置長(zhǎng)度映射為n=max)
Convention for Byte ArrayColumn(TypeName="Image")把字節(jié)型數(shù)據(jù)映射為Image 類(lèi)型,默認(rèn)映射為varbinary(max)
Convention for Booleanssqlserver映射為bit 類(lèi)型
Convention for One-to-Many ReleationShips外鍵關(guān)系,映射為 表名_主鍵列

1 修改Custom 的模型代碼: 添加using System.ComponentModel.DataAnnotations; 引用

using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;
namespace QuickStart.Model
{
  // [Table("Customer")]//存儲(chǔ)表名Customer,默認(rèn)是類(lèi)名
  public class Customer
   {
      public Customer() {
          this.Orders = new List<Order>();
      }

      [MaxLength(50)]
      public string CustomerID { get; set; }
      [Required] //必填
      [MaxLength(50)] //大長(zhǎng)度50個(gè)漢字
      public string Name { get; set; }
      public decimal Balance { get; set; }

      /// <summary>
      /// 客戶(hù)與訂單是one or many
      /// </summary>
      public List<Order> Orders { get; set; }
   }
}

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace QuickStart.Model
{
  public class Order
   {
      public Order() {
          this.CreateTime = DateTime.Now;
          this.OrderItems = new List<OrderItem>();
      }

      public int OrderID { get; set; }
      [MaxLength(50)]
      public string Title { get; set; }
      public decimal Total { get; set; }
      public DateTime CreateTime { get; set; }

      //one or many
      public List<OrderItem> OrderItems { get; set; }
      // one or one
      public Customer Customer { get; set; }
   }
}

當(dāng)模型被修改后,此時(shí)如果直接運(yùn)行代碼,Code First 會(huì)拋出一個(gè)異常,說(shuō) 要?jiǎng)?chuàng)建的OrderBD 已經(jīng)存在。 默認(rèn)配置下CodeFisrt 是不會(huì)自動(dòng)修改的。

所以,需要添加一個(gè)初始化配置,在main函數(shù)代碼開(kāi)始的時(shí)候,讓Code First 去檢測(cè)Model 是否發(fā)生更改,如果更改,就刪掉原數(shù)據(jù)庫(kù),然后重新創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)。 此種方式更新數(shù)據(jù)庫(kù),必須要保證數(shù)據(jù)庫(kù)在其他地方為被使用,否則刪除數(shù)據(jù)庫(kù)時(shí)將不會(huì)成功。

1 確保配置文件中,鏈接字符串包含保存密碼配置 Persist Security Info=true

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <connectionStrings>
   <add name="OrderDB" providerName="System.Data.SqlClient"
        connectionString="server=.;uid=sa;pwd=123456;database=OrderDB;Persist Security Info=true"/>
   <!--要CodeFirst能自動(dòng)維護(hù)model的更改,必須添加Persist Security Info=true 項(xiàng),表示保持賬號(hào)密碼-->
 </connectionStrings>
</configuration>

2 在main 函數(shù)中添加 using System.Data.Entity; 引用。 (此處代碼與第一小節(jié)有點(diǎn)變化,更改過(guò)了,不過(guò)應(yīng)該可以看懂)。粗體代碼為修改部分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuickStart.Model;
using System.Data.Entity;
namespace QuickStart
{
   class Program
   {
       static void Main(string[] args)
       {
           //數(shù)據(jù)庫(kù)變動(dòng)初始化方法一:每次檢查數(shù)據(jù)庫(kù)上下文,如果模型Model發(fā)生變化,就刪除現(xiàn)有數(shù)據(jù)庫(kù),重新創(chuàng)建
          Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DBContextAPI>());

           CreateCustomer(); //創(chuàng)建顧客
           Console.ReadKey();
       }

       private static void CreateCustomer()
       {
           using (var db = new DBContextAPI())
           {
               var customer = new Customer()
               {
                   CustomerID = "20121224001",
                   Name = "張三",
                   Balance = 1000
               };
               db.Customers.Add(customer);
               int result = db.SaveChanges();
               Console.WriteLine("追加{0}條記錄成功!", result);
           }
       }
   }
}

3 執(zhí)行,成功后,表結(jié)構(gòu)發(fā)生變化。

網(wǎng)頁(yè)名稱(chēng):ADO.NETEntityFramework-CodeFisrt(二)-創(chuàng)新互聯(lián)
本文鏈接:http://m.rwnh.cn/article20/cedhco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、用戶(hù)體驗(yàn)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站改版品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
长岭县| 平泉县| 钦州市| 海淀区| 巴南区| 黎平县| 栾城县| 五河县| 滕州市| 东台市| 勃利县| 红桥区| 正定县| 武威市| 余江县| 山阳县| 东平县| 黎平县| 怀仁县| 黑河市| 财经| 定远县| 伊金霍洛旗| 黔南| 泸水县| 巴塘县| 沭阳县| 黔西| 灵石县| 库车县| 玉树县| 星座| 扶余县| 驻马店市| 栾川县| 舒兰市| 中西区| 钟山县| 涿鹿县| 长子县| 双峰县|