日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Entity Framework CodeFirst尝试

發(fā)布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Entity Framework CodeFirst尝试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

Code First模式我們稱之為“代碼優(yōu)先”模式,是從EF4.1開始新建加入的功能。使用Code First模式進(jìn)行EF開發(fā)時開發(fā)人員只需要編寫對應(yīng)的數(shù)據(jù)類(其實就是領(lǐng)域模型的實現(xiàn)過程),然后自動生成數(shù)據(jù)庫。這樣設(shè)計的好處在于我們可以針對概念模型進(jìn)行所有數(shù)據(jù)操作而不必關(guān)系數(shù)據(jù)的存儲關(guān)系,使我們可以更加自然的采用面向?qū)ο蟮姆绞竭M(jìn)行面向數(shù)據(jù)的應(yīng)用程序開發(fā)。

從某種角度來看,其實“Code First”和“Model First”區(qū)別并不是太明顯,只是它不借助于實體數(shù)據(jù)模型設(shè)計器,而是直接通過編碼(數(shù)據(jù)類)方式設(shè)計實體模型(這也是為什么最開始“Code First”被叫做“Code Only”的原因)。但是對于EF它的處理過程有所差別,例如我們使用Code First就不再需要EDM文件,所有的映射通過“數(shù)據(jù)注釋”和“fluent API”進(jìn)行映射和配置。另外需要注意的是“Code First”并不代表一定就必須通過數(shù)據(jù)類來定義模型,事實上也可以通過現(xiàn)有數(shù)據(jù)庫生成數(shù)據(jù)類。

Code First 簡單使用演示

第一步:還是添加一個控制臺應(yīng)用程序,然后在此項目中添加兩個簡單的實體類

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace CodeFirstTest {public class OrderDetail{public int ID { get; set; }public string Product { get; set; }public int OrderID { get; set; }public virtual Order Order { get; set; }} } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace CodeFirstTest {public class Order{public int ID { get; set; }public string Customer { get; set; }public DateTime OrderDate { get; set; }public virtual List<OrderDetail> OrderDetails { get; set; }} }

有了這兩個類之后讓我們定義一個數(shù)據(jù)庫上下文,有了它我們就可以對數(shù)據(jù)進(jìn)行增刪改查操作了,這個類必須繼承于"System.Data.Entity.DbContext”類以賦予它數(shù)據(jù)操作能力。因此接下來我們需要給這個應(yīng)用安裝EntityFramework包,因為到目前為止我們并沒有引入EF框架相關(guān)的任何內(nèi)容,我們需要引入EF相關(guān)程序集。但是我們有更好的選擇那就是NuGet。通過NuGet進(jìn)行在線安裝:項目中右鍵選擇"Manage NuGet Packages…”;選擇Online;再選擇“EntityFramework”;然后點擊安裝即可。不了解NuGet的朋友到這里看一下使用 NuGet 管理項目庫。

數(shù)據(jù)庫上下文操作類:

namespace CodeFirstTest {public class OrderTestContext:DbContext{public DbSet<Order> Orders { get;set;}public DbSet<OrderDetail> OrderDetails { get; set; }} }

代碼調(diào)用實例

?

static void Main(string[] args){using (var db = new OrderTestContext()){Order Order = new Order();Order.Customer = "aehyok";Order.OrderDate = DateTime.Now;db.Orders.Add(Order);db.SaveChanges();IQueryable<Order> Orders = from Orderes in db.Ordersselect Orderes;foreach (Order O in Orders){Console.WriteLine("OrderID is {0},Customer is {1}", O.ID, O.Customer);}}Console.ReadLine();}

?調(diào)用效果

?

生成的數(shù)據(jù)庫在這里,在此我們可以發(fā)現(xiàn)針對數(shù)據(jù)庫,我們沒有做任何的處理,沒有建數(shù)據(jù)庫,也沒有進(jìn)行配置,當(dāng)然它應(yīng)該會有默認(rèn)的配置。

接下來我們來看一下,如何來配置。

我們可以在App的配置文件里添加一個數(shù)據(jù)庫的鏈接字符串

<?xml version="1.0" encoding="utf-8"?> <configuration><configSections><!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --><section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /></configSections><connectionStrings><add name="CodeFirstTest" connectionString="Data Source=.;Database=CodeFirstTest;UID=sa;PWD=sa123;" providerName="System.Data.SqlClient"></add></connectionStrings><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup><entityFramework><defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"><parameters><parameter value="v11.0" /></parameters></defaultConnectionFactory></entityFramework> </configuration>

?里面主要添加了一個數(shù)據(jù)庫鏈接字符串

針對數(shù)據(jù)庫上下文操作類的更改

public class OrderTestContext:DbContext{public OrderTestContext(string connectionName): base(connectionName){}public DbSet<Order> Orders { get;set;}public DbSet<OrderDetail> OrderDetails { get; set; }}

?主要是添加了一個構(gòu)造函數(shù)帶有一個參數(shù)的。然后在調(diào)用上也有所調(diào)整。

using (var db = new OrderTestContext("CodeFirstTest")){Order Order = new Order();Order.Customer = "aehyok";Order.OrderDate = DateTime.Now;db.Orders.Add(Order);db.SaveChanges();IQueryable<Order> Orders = from Orderes in db.Ordersselect Orderes;foreach (Order O in Orders){Console.WriteLine("OrderID is {0},Customer is {1}", O.ID, O.Customer);}}

?主要是針對實例化數(shù)據(jù)庫操作上下文的

調(diào)用結(jié)果也是

同時打開Sql Server 發(fā)現(xiàn)也有了剛剛在配置文件中配置的那個數(shù)據(jù)庫

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/aehyok/p/3323496.html

總結(jié)

以上是生活随笔為你收集整理的Entity Framework CodeFirst尝试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。