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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Entity Framework Core的贴心:优雅处理带默认值的数据库字段

發布時間:2023/12/4 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Entity Framework Core的贴心:优雅处理带默认值的数据库字段 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于用于保存記錄添加時間的數據庫日期字段,我們通常會設置一個?GETDATE()?的默認值,而不是在應用程序的代碼中獲取當前時間進行保存,這樣可以避免由于web服務器時鐘不同步引起的時間偏差。

Entity Framework Core 在設計時貼心地考慮到這個場景,提供了?.HasDefaultValueSql()?映射配置,今天在實際開發中體檢了一下,的確管用。

比如下面的數據庫表中 DateAdded 與 IsActive 這2個字段分別設置了默認值:

CREATE TABLE [dbo].[Log](

? ? [Id] [int] IDENTITY(1,1) NOT NULL, ? ?

? ? [IP] [varchar](20) NOT NULL,

? ? [DateAdded] [datetime] NOT NULL DEFAULT (GETDATE()),

? ? [IsActive] [bit] NOT NULL DEFAULT ((1))

)

使用 EF Core 的?HasDefaultValueSql 進行映射配置:

builder.Entity<Log>().Property(l => l.DateAdded).HasDefaultValueSql(null); builder.Entity<Log>().Property(l => l.IsActive).HasDefaultValueSql(null);

在 EF Core 保存數據時會生成下面的SQL語句:

exec sp_executesql N'SET NOCOUNT ON;

INSERT INTO [Log] ([IP])

VALUES (@p0);

SELECT [Id], [DateAdded], [IsActive]

FROM [Log]

WHERE @@ROWCOUNT = 1 AND [Id] = scope_identity();


',N'@p0 nvarchar(20)',@p0=N'127.0.0.1'

在 INSERT 時忽略?HasDefaultValueSql 的字段,在 INSERT 后將默認值 SELECT 出來賦給實體對應的屬性。?

貼心的 Entity Framework Core ,讓 .NET Core 更多了一份魅力。?


原文地址:http://www.cnblogs.com/dudu/p/6740170.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的Entity Framework Core的贴心:优雅处理带默认值的数据库字段的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。