EF Core 5如何停止将ValueGeneratedOnAdd添加到我的所有模型中

安东尼·约翰斯顿

我正在从EF Core 2.2迁移到5,并为我的ID使用显式的Guid,即未生成

将非跟踪的子值添加到实体时,这会导致错误

参考:https : //github.com/dotnet/efcore/issues/17747

有没有一种方法可以将整个模型配置添加ValueGeneratedOnAdd()到我的id列中,而无需在每个模型上都明确设置呢?

    public class ParentData
    {
        public Guid Id { get; set; }
        public IList<ChildData> Children { get; set; } = new List<ChildData>();
    }

    public class ChildData
    {
        public Guid Id { get; set; }
        public Guid ParentId { get; set; }
        public ParentData Parent { get; set; }
    }

谢谢

伊万·斯托夫(Ivan Stoev)

由于ValudGeneratedOnAddGuid类型的PK是按照惯例,也是EF核心目前(V5.x中)不提供修改公约的方式,你可以使用元数据API来完成你所需要的。

添加以下代码段OnModelCreating覆盖(以确保所有的实体类型已发现的):

foreach (var property in modelBuilder.Model
    .GetEntityTypes()
    .SelectMany(t => t.GetProperties())
    .Where(p => p.ValueGenerated == ValueGenerated.OnAdd
        && p.IsPrimaryKey()
        && p.ClrType == typeof(Guid)))
{
    property.ValueGenerated = ValueGenerated.Never;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF Core中的IsNumeric

来自分类Dev

为什么我不能使用postgresql将IsTsVectorExpressionIndex添加到EF CORE的modulebuilder中?

来自分类Dev

带总和的EF Core 5

来自分类Dev

EF Core中的获取迁移

来自分类Dev

如何将新对象添加到现有实体,将数据放入数据中并让EF将其添加到我的数据库中?

来自分类Dev

.NET Core / EF.Core 3+将控制台日志添加到DbContext

来自分类Dev

在EF Core中添加或更新实体

来自分类Dev

关于EF Core中的“自有”类型

来自分类Dev

Ef Core-添加唯一索引

来自分类Dev

EF Core-添加唯一索引

来自分类Dev

我不想要的EF Core加载关系

来自分类Dev

EF Core 5,删除多对多关系

来自分类Dev

EF Core 5将阴影备用键添加到某些实体,但不使用该属性

来自分类Dev

带有 EF Core 的沙盒 Sqlite

来自分类Dev

EF Core:如何查询SQL视图

来自分类Dev

如何异步使用EF Core扩展方法

来自分类Dev

如何从EF Core的FromSqlRaw获取空间值

来自分类Dev

如何使用Ef Core异步查询数据?

来自分类Dev

EF Core RC2中的迁移

来自分类Dev

EF Core 3.0中的存储过程

来自分类Dev

EF Core中的等效SqlFunction.Difference

来自分类Dev

EF Core 3.0中的数据属性继承

来自分类Dev

在EF Core 2.0中配置UseIdentityColumn

来自分类Dev

在Heroku中运行EF Core迁移

来自分类Dev

EF Core 3.1中的TimeSpan问题

来自分类Dev

获取EF Core 3.1中的角色列表

来自分类Dev

在EF Core 3中映射json

来自分类Dev

减少和增加EF Core中的列

来自分类Dev

.NET / EF Core中的批量插入优化