![](/img/trans.png)
[英]Entity Framwork Core + Linq: How do I get the entire entity that has the max value? Looking for a more elegant solution
[英]How can I define an Entity column so that it has a default value on creation but can be overwritten via Entity Framwork?
在我的Users
表中,我有一個名為CreatedOn
的列,該列的“默認值或綁定”設置為(getdate())
。 在此模型的.edmx文件中,我將此列定義為<Property Name="CreatedOn" Type="datetime2" Precision="7" Nullable="false" StoreGeneratedPattern="Computed"/>
。
但是,我可以將.edmx文件中的字段定義更改為StoreGeneratedPattern="None"
,這給了我:
問題在於,當我為.edmx文件中的此列指定StoredGeneratedPattern="None"
時,實體框架而不是讓數據庫自行設置GETTIME()而是發送值0001-01-01 00:00:00
然后覆蓋數據庫默認值。 我從記錄Entity發送的SQL語句中知道了這一點: INSERT [dbo].[Users]([LoginName], [Password], ..., [CreatedOn]) VALUES (@0, @1, ..., @7) where @7 = '0001-01-01 00:00:00' (Type = DateTime2)
。
我必須做些什么才能得到以下信息:
您可以使用第二種方法並通過在保存應用程序代碼之前將CreatedOn
設置為DateTime.Now
來減輕不利影響。 因此, CreatedOn
道具完全由應用程序中的應用程序代碼管理,但是如果直接在數據庫中創建User
則默認約束將生效。
以下是根據情況使用設置CreatedOn
的幾種方法:
CreatedOn
屬性的抽象基類或接口,並在要向其添加道具的任何類中繼承/實現。 然后創建一個基本的存儲庫保存方法,該方法檢查要保存的對象是否具有CreatedOn
屬性的類型,如果是,則在保存之前進行設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.