【发布时间】:2021-04-30 17:16:56
【问题描述】:
假设我有一个 .NET Entity Framework 模型类:
public class Foo
{
public int FooId { get; set; }
public string Description { get; set; }
public DateTime Created { get; set; }
public DateTime LastUpdated { get; set; }
}
我的 SQL Server 表中的 Created 和 LastUpdated 列,类型均为 DATETIME2,具有 DEFAULT 约束 (SYSUTCDATETIME())。每当描述更改时,AFTER UPDATE 触发器都会将 LastUpdated 设置为 SYSUTCDATETIME。
在我的代码中,当我从 Foo 表中读取数据时,我希望包含 Created 和 LastUpdated,因为我想使用它们的值。但是当我向表中添加一行时,我不希望它们包含在 Add 中,因为我希望 SQL Server 使用我配置它使用的默认值。我认为这只是一个问题
Foo foo = new Foo
{
Description = "This is my latest foo."
}
但是 C# 为这两个日期属性提供了它们自己的默认值 0001-01-01T00:00:00.000000,它不为空,这就是表中记录的内容。
难道没有一个属性告诉框架不要将属性写回数据库吗?不是NotMapped,因为这会阻止读取值。
【问题讨论】:
-
考虑关闭问题。默认/只读值和
Computed与Identity列的行为已在 StackOverflow 中介绍过几次,例如:stackoverflow.com/questions/18506088/… -
@StevePy 我会关闭它,但该网站在发布后两天内不允许自行关闭。
标签: entity-framework .net-attributes