EF代码优先和身份插入-一次性身份插入开启,其余时间关闭

本文关键字:插入 身份 余时间 时间 代码 EF 一次性 | 更新日期: 2023-09-27 17:50:30

我有一个应用程序,其中大部分都有一个简单的Users表。PK UserID是一个Guid。我首先使用EF Code,下面的代码一切都很好:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserID { get; set; }

然而,在我的应用程序中,我实际上想要强制使用Guids。这是一种特殊情况,在这个代码块之外,其他任何地方都应该按照预期从数据库生成Guid。

我知道在我写的初始化器中的Seed函数中,我可以很好地插入id。如何重现这些条件,以便在这个边缘情况下插入一个单位值?

EF代码优先和身份插入-一次性身份插入开启,其余时间关闭

如果不是自动生成身份插入…使用Guid作为主键,然后使用默认值NewGuid()。这样,如果您不提供Guid值,它将由数据库生成。

不需要SP

编辑:

如果没有自动生成的id,则让实体本身控制初始值。如果您在构造之后设置它的值,则可以。

只要对实体类做一个小小的改动,你就可以达到你想要的效果。

    class MyEntity {
        public Guid EntityId { get; set; }
        public MyEntity() {
            EntityId = Guid.NewGuid();
        }
    }