EFCodeFirst學(xué)習(xí)筆記初識(shí)CodeFirst-創(chuàng)新互聯(lián)

Code First是Entity Framework提供的一種新的編程模型。通過(guò)Code First我們可以在還沒(méi)有建立數(shù)據(jù)庫(kù)的情況下就開(kāi)始編碼,然后通過(guò)代碼來(lái)生成數(shù)據(jù)庫(kù)。

創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供成都機(jī)柜租用,高防服務(wù)器,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。

下面通過(guò)一個(gè)簡(jiǎn)單的示例來(lái)了解。

 建立一個(gè)控制臺(tái)項(xiàng)目。通過(guò)Nuget來(lái)獲取Entity Framework。

 增加兩個(gè)模型類:

 public class Destination
    {
public int DestinationId { get; set; }
public string Name { get; set; }
public string Country { get; set; }
public string Description { get; set; }
public byte[] Photo { get; set; }
public List<Lodging> Lodgings { get; set; }
    }

public class Lodging
    {
public int LodgingId { get; set; }
public string Name { get; set; }
public string Owner { get; set; }
public bool IsResort { get; set; }
public Destination Destination { get; set; }
    }

再新增Context類:

 public class BreakAwayContext : DbContext
    {
public DbSet<Destination> Destinations { get; set; }
public DbSet<Lodging> Lodgings { get; set; }
    }

在Main方法中加入下列代碼:

static void Main(string[] args)
        {
var d = DateTime.Now.Date.ToString("yyyyMM");
var destination = new Destination
            {
                Country= "Indonesia",
                Description= "EcoTourism at its best in exquisite Bali",
                Name= "Bali"
            };
using (var context = new BreakAwayContext())
            {
                context.Destinations.Add(destination);
                context.SaveChanges();
            }
            Console.WriteLine("OK");
        }

執(zhí)行成功后打開(kāi)數(shù)據(jù)庫(kù),默認(rèn)為.SQLEXPRESS。

我們可以看到,新增了一個(gè)名為BreakAway.BreakAwayContext的數(shù)據(jù)庫(kù)。

[Destinations]表里面也插入了我們剛增加的記錄:

很COOL吧,Code First就是這么神奇。這里我們代碼里面什么也沒(méi)設(shè)置,都是Code First默認(rèn)生成的。通過(guò)生成的數(shù)據(jù)庫(kù)庫(kù)我們來(lái)了解一下這些默認(rèn)設(shè)置。

數(shù)據(jù)庫(kù)名:當(dāng)沒(méi)有顯示設(shè)置數(shù)據(jù)連接的時(shí)候,默認(rèn)的數(shù)據(jù)庫(kù)是:.SQLEXPRESS。如果本地沒(méi)有SQLEXPRESS,EF會(huì)嘗試LocalDb ((localdb)v11.0) .SQLEXPRESS

這個(gè)數(shù)據(jù)庫(kù)包含在VS2012中。數(shù)據(jù)庫(kù)的名稱一般是DbContext的“命名空間.類名”,本例中是BreakAway.BreakAwayContext

表名:表名默認(rèn)為模型類名的復(fù)數(shù)形式,并且每個(gè)表都使用dbo構(gòu)架創(chuàng)建。這里生成的就是dbo.Lodgings.

主鍵:Code First會(huì)默認(rèn)將以類似Id結(jié)尾來(lái)命名的屬性當(dāng)作主鍵,如ID,Id,本例中的DestinationId都自動(dòng)設(shè)置為主鍵。如果該屬性是int類型,Code First會(huì)在數(shù)據(jù)庫(kù)中默認(rèn)將該列設(shè)置為自增長(zhǎng)。

數(shù)據(jù)類型:在SQL Server中,字符串默認(rèn)映射成nvarchar(max),byte[]映射成varbinary(max),bool映射成bit,decimal映射成decimal(18, 2),float映射成float。同時(shí)因?yàn)閎ool,decimal,float等是值類型,不能為給他們分配Null值。所生成的數(shù)據(jù)庫(kù)會(huì)要求對(duì)應(yīng)的列非空。如Lodgings表中的IsResort

外鍵:Code First檢測(cè)到模型間有一對(duì)多的關(guān)系,會(huì)自動(dòng)在相應(yīng)表中生成外鍵。在這時(shí),Code First檢測(cè)到Destination類中有一個(gè)List<Lodging> Lodgings屬性,而在Lodging類中有一個(gè)Destination Destination屬性,說(shuō)明Destination與Lodging是一對(duì)多的關(guān)系,因而在Lodgings表中生成了外鍵Destination_DestinationId保存對(duì)應(yīng)的DestinationId。外鍵的命名默認(rèn)是導(dǎo)航屬性名(這里是Destination)_對(duì)應(yīng)主表的主鍵(這里是DestinationId)。

網(wǎng)站名稱:EFCodeFirst學(xué)習(xí)筆記初識(shí)CodeFirst-創(chuàng)新互聯(lián)
URL地址:http://bm7419.com/article24/ggoje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、小程序開(kāi)發(fā)、ChatGPT外貿(mào)建站、云服務(wù)器、服務(wù)器托管

廣告

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

微信小程序開(kāi)發(fā)