日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
EF框架中的非數(shù)據(jù)庫(kù)字段用法介紹(ef非數(shù)據(jù)庫(kù)字段)

Entity Framework(EF)是一個(gè)相當(dāng)出色的ORM框架。它提供了一種輕松的方式來管理 .NET 應(yīng)用程序中與數(shù)據(jù)庫(kù)之間的交互。每個(gè)數(shù)據(jù)庫(kù)帶來的模式和模式限制,因此 EF 展現(xiàn)出了它所支持的功能的同時(shí)使其適應(yīng)不同的數(shù)據(jù)庫(kù)。然而,當(dāng)有些值的表達(dá)方式不適合數(shù)據(jù)模型,這種情況可能會(huì)出現(xiàn)問題。

在 Entity Framework 中,非數(shù)據(jù)庫(kù)字段可以非常有用。在本文中,我們將探討在 EF 框架中使用非數(shù)據(jù)庫(kù)字段的用法。我們將探討如何創(chuàng)建和使用這些字段,如何應(yīng)用在查詢和數(shù)據(jù)模型上,以及 EF 中的限制。

什么是非數(shù)據(jù)庫(kù)字段?

一個(gè)非數(shù)據(jù)庫(kù)字段,是一個(gè)沒有對(duì)應(yīng)數(shù)據(jù)庫(kù)列的屬性。在 EF 中,它被稱為計(jì)算字段(Computed Fields)或非映射字段(Unmapped Fields)。它們可能是由開發(fā)人員計(jì)算或指定,或者通過表達(dá)式或?qū)傩缘慕M合生成。

這些字段有很多不同的用途。例如,開發(fā)人員可以使用非數(shù)據(jù)庫(kù)字段添加類別屬性,例如 Color 或 Level,那么數(shù)據(jù)表中就沒有這樣的列。

在EF中創(chuàng)建非數(shù)據(jù)庫(kù)屬性

想要在EF中創(chuàng)建非數(shù)據(jù)庫(kù)屬性,首先需要在數(shù)據(jù)Model實(shí)體類中定義一個(gè)屬性。這個(gè)屬性的唯一特征是它需要一個(gè) [NotMapped] 標(biāo)記。這個(gè)標(biāo)記告訴 EF 此屬性不需要映射到數(shù)據(jù)庫(kù)中任何列。

“`csharp

public class OrderItem

{

public int Id { get; set; }

public string Name { get; set; }

public decimal Price { get; set; }

[NotMapped]

public bool IsFree { get; set; }

}

“`

在上面的代碼段中,我們有一個(gè) OrderItem 實(shí)體類,有 Name,Price 等等屬性。IsFree 屬性沒有映射到數(shù)據(jù)庫(kù)中的任何列,因?yàn)樗?[NotMapped] 屬性。

在EF中查詢非數(shù)據(jù)庫(kù)屬性

現(xiàn)在我們已經(jīng)定義了一個(gè)非數(shù)據(jù)庫(kù)屬性,我們要如何查詢 EF 中的計(jì)算屬性?Option 1:在我們的數(shù)據(jù)模型定義中,通過使用 LINQ 的 Select 方法選擇我們想要的屬性。在我們的例子中,我們可以選擇 OrderItem 實(shí)體類中的 Name、Price 和 IsFree。

“`csharp

var orderItems = context.OrderItems

.Select(x => new

{

x.Name,

x.Price,

IsFree = x.Price == 0

}).ToList();

“`

在代碼中,我們選擇 OrderItem 實(shí)體類的幾個(gè)屬性,包括 Name 和 Price。但是,我們還可以創(chuàng)建 IsFree 計(jì)算屬性,它只是一個(gè)簡(jiǎn)單的布爾表達(dá)式,告訴我們當(dāng)前 OrderItem 是否免費(fèi)。EF 還可以為我們計(jì)算值。

Option 2:運(yùn)用存儲(chǔ)過程或 SQL 查詢,在這方面我們可以為 Entity Framework 添加 Database SQL 查詢非數(shù)據(jù)庫(kù)字段。我們可以在我們的數(shù)據(jù)模型中使用 FromSqlRaw 方法或 FromSql Interpolated 方法并在方法中使用僅支持?jǐn)?shù)據(jù)庫(kù)提供者的 SQL 查詢,如下所示:

“`csharp

var orderItems = context.OrderItems.FromSqlRaw(

@”SELECT Id, Name, Price,

CASE

WHEN Price = 0 THEN CAST(1 AS BIT)

ELSE CAST(0 AS BIT)

END AS IsFree

FROM OrderItems”)

.ToList();

“`

在上面的 SQL 查詢中,我們?yōu)?OrderItem 的 Price 計(jì)算 IsFree 屬性的值。這可以通過在 SQL 查詢中使用 CASE 語句輕松實(shí)現(xiàn)。

一些注意點(diǎn)

現(xiàn)在我們已經(jīng)知道如何在 EF 中使用非數(shù)據(jù)庫(kù)字段了。盡管非數(shù)據(jù)庫(kù)字段提供了很多好處,但也有一些限制和注意事項(xiàng)。

– 非數(shù)據(jù)庫(kù)字段不保存在數(shù)據(jù)庫(kù)中:因?yàn)槲覀兪褂?[NotMapped] 標(biāo)記告訴 EF 我們不想映射到數(shù)據(jù)庫(kù)中的列。這意味著非數(shù)據(jù)庫(kù)字段不會(huì)保存到數(shù)據(jù)庫(kù)中。當(dāng)然,我們可以使用 LINQ 或 SQL 查詢的方式獲取這些值。

– 非數(shù)據(jù)庫(kù)字段不支持修改等數(shù)據(jù)操作:我們不能對(duì)非數(shù)據(jù)庫(kù)字段做出如 Add、Remove、Update 等增刪改操作。我們需要修改相應(yīng)的屬性并進(jìn)行更新。

– 非數(shù)據(jù)庫(kù)字段可以通過 SQL 查詢或存儲(chǔ)過程添加:我們已經(jīng)在代碼中看到了如何使用 SQL 查詢或存儲(chǔ)過程向 EF 中添加非數(shù)據(jù)庫(kù)字段。

– 不支持在 EF 中將實(shí)體對(duì)象編寫為計(jì)算字段:雖然我們可以將實(shí)體屬性標(biāo)記為非映射屬性,但是我們不能將整個(gè)實(shí)體對(duì)象標(biāo)記為非映射字段。

結(jié)論

非數(shù)據(jù)庫(kù)字段可以為我們的程序帶來很多好處。這些字段可以讓我們輕松地將其他屬性和枚舉添加到當(dāng)前的實(shí)體類型中。例如,我們可能會(huì)發(fā)現(xiàn)某些實(shí)體在編寫時(shí)需要一些臨時(shí)屬性。此時(shí)非數(shù)據(jù)庫(kù)字段將是非常有用的。

在本文中,我們已經(jīng)了解了 EF 框架中非數(shù)據(jù)庫(kù)字段的使用方法。我們學(xué)習(xí)了如何創(chuàng)建和使用這些字段,例如如何在查詢和數(shù)據(jù)模型上使用非數(shù)據(jù)庫(kù)字段。我們還了解了一些 EF 中的限制。希望這篇文章是有用的,無論您是一名開發(fā)人員還是一名數(shù)據(jù)庫(kù)管理員。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

Ef DbMigration 非主鍵字段 怎么設(shè)置為自增

理論上來說

你的

和我的這個(gè)

this.Property(p => p.DishCode).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

意義是一樣的

至于你說的 那種 我其實(shí)也試過 主鍵是肯定可以的 這個(gè)我也做過

ef code first 怎么生成數(shù)據(jù)庫(kù)字段說明

就是為字段(model中的屬性)設(shè)置默認(rèn)值,如果不填時(shí)有默認(rèn)值或者比如checkbox默認(rèn)選中

ef core使用code first無法為mysql數(shù)據(jù)表設(shè)置字段默認(rèn)值,該怎么辦

這里我們選擇 ASP.NET Core Web Application (.NET Core)

這里選擇web 應(yīng)用程序,然后更改身份驗(yàn)證 改為 不進(jìn)行身份驗(yàn)證

然后再包管理控制臺(tái)里執(zhí)行下面兩條命令

引用 EntityFrameworkCore

Install-Package Microsoft.EntityFrameworkCore

再引用 EntityFrameworkCore.SqlServer

Install-Package Microsoft.EntityFrameworkCore.SqlServer

創(chuàng)建實(shí)體

我們?cè)陧?xiàng)目添加一個(gè) Models 文件夾。

新建一個(gè)User.cs

public class User

{

public int Id { get; set; }

public string UserName { get; set; }

public string Password { get; set; }

}

這里我為了方便,繼續(xù)新建 DataContext.cs

public class DataContext : DbContext

{

public DataContext(DbContextOptions options)

: base(options)

{

}

public DbSet Users { get; set; }

}

創(chuàng)建數(shù)據(jù)庫(kù)

打開 Startup.cs 在 ConfigureServices 下添加如下代碼:

public void ConfigureServices(IServiceCollection services)

{

//這里就是填寫數(shù)據(jù)庫(kù)的鏈接字符串

var connection = “Data Source=.;Initial Catalog=EFCore;User ID=sa;Password=sa.123”;

services.AddDbContext(options => options.UseSqlite(connection));

// Add framework services.

services.AddMvc();

}

ef 非數(shù)據(jù)庫(kù)字段的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于ef 非數(shù)據(jù)庫(kù)字段,EF框架中的非數(shù)據(jù)庫(kù)字段用法介紹,Ef DbMigration 非主鍵字段 怎么設(shè)置為自增,ef code first 怎么生成數(shù)據(jù)庫(kù)字段說明,ef core使用code first無法為mysql數(shù)據(jù)表設(shè)置字段默認(rèn)值,該怎么辦的信息別忘了在本站進(jìn)行查找喔。

創(chuàng)新互聯(lián)是成都專業(yè)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、SEO優(yōu)化、手機(jī)網(wǎng)站、小程序開發(fā)、APP開發(fā)公司等,多年經(jīng)驗(yàn)沉淀,立志成為成都網(wǎng)站建設(shè)第一品牌!


網(wǎng)站題目:EF框架中的非數(shù)據(jù)庫(kù)字段用法介紹(ef非數(shù)據(jù)庫(kù)字段)
瀏覽地址:http://www.5511xx.com/article/cdodooo.html