c# - 实体框架 - 更改默认值
问题描述
我有一个 SQL Server 表,其中很多列都有默认值。一个例子是ModifiedDtm
(最后一次修改行的时间),它将具有GETDATE()
默认值。为避免与此冲突,我在 Entity Framework 6.2 中使用代码优先方法以以下方式实现了它:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime ModifiedDtm { get; set; }
这使得默认值在创建行时按预期工作。但是,它阻止我再次更新该列。
如何使它可以使用 SQL 默认值,但仍然允许稍后使用 EF 更改值?
解决方案
您应该考虑为此使用流利的 API。在您的上下文类中添加一小部分以使用HasDefaultValueSQL设置默认值,如下所示
class MyContext : DbContext
{
public DbSet<YourEntity> YourEntities{ get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<YourEntity>()
.Property(b => b.Created)
.HasDefaultValueSql("getdate()");
}
}
注意:此解决方案需要 EF Core
推荐阅读
- python - 在 centos7 上安装 python3-pip.noarch
- reactjs - 为孩子添加鼠标监听器
- php - 尝试更新时出现奇怪的 Give Data Is Invalid 错误消息
- typescript - TypeScript:按值从对象中删除键
- javascript - 我可以在标题和重要文本上使用 tabindex 吗?
- pyspark - 在同一 Databricks 集群策略中处理无服务器和单节点
- assembly - 有没有办法在 AArch64 程序集中缩短这个机器代码 Hello World ?
- html - 缩放的 SVG 导致线宽不均匀
- python - 组合 DataFrame 行以消除 NaN
- python-3.x - 将文本文件从 URL 导入到 pandas 数据框时出错