EF簡介
? EF全稱是Entity Framework,是微軟官方提供的ORM(Object Relational Mapping 對象關(guān)系映射)工具梆靖,ORM讓開發(fā)人員節(jié)省數(shù)據(jù)庫訪問的代碼時間育特,將更多的時間放到業(yè)務(wù)邏輯層代碼上。EF提供變更跟蹤、唯一性約束谎僻、惰性加載间影、查詢事物等。開發(fā)人員使用Linq語言辰妙,對數(shù)據(jù)庫操作如同操作Object對象一樣省事。
? EF由三種使用模式:1. Code First模式:由實體類生成數(shù)據(jù)庫結(jié)構(gòu)甫窟;2. Model First模式:通過數(shù)據(jù)庫可視化設(shè)計器設(shè)計數(shù)據(jù)庫密浑,并生成實體類;3. Database First模式:由數(shù)據(jù)庫生成實體類粗井。
Code First模式
Code First模式我們稱之為“代碼優(yōu)先”模式肴掷,是從EF4.1開始新建加入的功能敬锐。使用Code First模式進行EF開發(fā)時開發(fā)人員只需要編寫對應(yīng)的數(shù)據(jù)類(其實就是領(lǐng)域模型的實現(xiàn)過程),然后自動生成數(shù)據(jù)庫呆瞻。這樣設(shè)計的好處在于我們可以針對概念模型進行所有數(shù)據(jù)操作而不必關(guān)系數(shù)據(jù)的存儲關(guān)系台夺,使我們可以更加自然的采用面向?qū)ο蟮姆绞竭M行面向數(shù)據(jù)的應(yīng)用程序開發(fā)。
? Code First模式的使用:
在Vs2017中新建一個名為EFDemo的控制臺應(yīng)用程序項目如下新建一個user類痴脾,和一個UserContext類:
User類:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace EFDemo {
public class User {
[Key,Index]//設(shè)置Id為主鍵,并添加索引
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
}
UserContext類:
using System.Data.Entity;
namespace EFDemo {
public class UserContext :DbContext{
public UserContext() : base("EFDemoConnectionString") { }
public DbSet<User> User { get; set; }
}
}
在建立UserContext中必須繼承自 System.Data.Entity.DbContext類,才能有對數(shù)據(jù)的CRUD操作, 要使用DbContext類必須引用EntityFramework包.在NuGet中進行檢索安裝:
如下:
運行Main方法后,將自動生成數(shù)據(jù)庫:
using System;
using System.Linq;
namespace EFDemo {
class Program
{
static void Main(string[] args)
{
using(var context = new UserContext()) {
var user = new User {
Id = 1,
Name = "user",
Password = "123",
};
context.User.Add(user);//新增一條數(shù)據(jù)
context.SaveChanges();//保存更改.每一次對數(shù)據(jù)庫的CUD操作都應(yīng)該使用此方法
var query = from a in context.User
where a.Id == 1
select a;//Linq 語句用戶快速查詢
Console.Write($"UserId:{user.Id},UserName:{user.Name },UserPassword:{user.Password}");
Console.ReadKey();
}
}
}
}
結(jié)果展示:
數(shù)據(jù)庫展示: