EF Code First和Identity Insert - 一次性身份插入ON,其余时间OFF

时间:2013-01-03 17:18:54

标签: c# entity-framework ef-code-first guid identity-insert

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

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

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

我知道在我写的初始化程序中的种子函数中,我可以很好地插入ID。如何重现这些条件,以便我可以在此边缘情况下插入标识值?

1 个答案:

答案 0 :(得分:1)

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

不需要SP。

修改

没有自动生成的id,让实体本身控制初始值。如果你在施工后设置它的值,那就没关系。

通过对相关实体类的微小更改,您可以实现您想要的效果。

    class MyEntity {
        public Guid EntityId { get; set; }

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