EF 6 新特性五

2022-09-19 12:03:10 字數 2614 閱讀 7205

腳手架可為空的引用型別

ef core 6.0 改進了現有資料庫的腳手架。在專案中啟用可空引用型別 (nrt) 時,ef core 會自動使用 nrt 構建 dbcontext 和實體型別。

有示例表:

create table [posts] (

[id] int not null identity,

[name] nvarchar(max) not null,

[description] nvarchar(max) null,

constraint [pk_posts] primary key ([id])

)

生成的模型:

public partial class post

public string name = null!;

public string? desciption

}

ef core 6.0 將資料庫注釋構建為**注釋。

有示例資料庫:

create table [posts] (

[id] int not null identity,

[name] nvarchar(max) not null,

[description] nvarchar(max) null,

constraint [pk_posts] primary key ([id]));

exec sp_addextendedproperty

@name = n'ms_description', @value = 'the post table',

@level0type = n'schema', @level0name = dbo,

@level1type = n'table', @level1name = posts

exec sp_addextendedproperty

@name = n'ms_description', @value = 'the post identifier',

@level0type = n'schema', @level0name = dbo,

@level1type = n'table', @level1name = posts,

@level2type = n'column', @level2name = [id];

exec sp_addextendedproperty

@name = n'ms_description', @value = 'the post name',

@level0type = n'schema', @level0name = dbo,

@level1type = n'table', @level1name = posts,

@level2type = n'column', @level2name = [name];

exec sp_addextendedproperty

@name = n'ms_description', @value = 'the description name',

@level0type = n'schema', @level0name = dbo,

@level1type = n'table', @level1name = posts,

@level2type = n'column', @level2name = [description];

生成的模型:

/// /// the post table

///

public partial class post

/// /// the post name

///

public string name

/// /// the description name

///

public string description

}

adddbcontextfactory 註冊 dbcontext

在 ef core 5.0 中,您可以註冊乙個工廠以手動建立dbcontext例項。從 ef core 6.0 開始, adddbcontextfactory 還註冊dbcontext。因此,您可以根據需要同時注入工廠和dbcontext 。

var serviceprovider = new servicecollection()

.adddbcontextfactory(builder =>

builder.usesqlserver(@"server=(localdb)\mssqllocaldb;database = efcore6playground"))

.buildserviceprovider();

var factory = serviceprovider.getservice>();

using (var context = factory.createdbcontext())

using (var scope = serviceprovider.createscope())

class examplecontext : dbcontext

切換成EF6框架

之前用的ef5框架,現在想換成ef6,可是問題到處都是。解決方案 第一步 建立空控制台程式 第二步 在 工具 庫程式包管理器 程式包管理器控制台 這裡 預設專案,在pm 後 輸入 install package entityframework version 6.0.0 install packag...

SQLite使用EF6的連線配置

1.使用nuget安裝sqliteinstall package system.data.sqlite安裝好後的依賴項有 如果沒有安裝全,則需要手動安裝需要的dll 2.安裝時會自動配置配置檔案。配置好的檔案如下 注意 configsections配置節一定要在connectionstrings節之...

EF6學習筆記十五 除錯EF框架原始碼

今天繼續學習ef,但是看來看去,實在是感覺不爽啊,因為你不知道原始碼裡面到底是什麼回事,我只能去猜去想象,要是有原始碼給我看幾個單詞也好啊。建立自己的控制台專案,引入兩個程式集,並且控制台程式新增對這兩個程式集的引用,把這兩個程式集的強簽名去掉,重新生成解決方案 這裡要注意,我們只引入了entity...