EF可以防止生成主键

时间:2014-09-18 17:27:31

标签: sql-server entity-framework

我正在创建一个使用GUID作为主键的模型。我自己设置了GUID,然后使用EF将模型保存到SQL Server DB。在调用DbContext.SaveChanges()期间,GUID已更改。我可以阻止这个吗?

编辑:

无论如何,班级都没有装饰。 Guid由静态构造函数设置:

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

    public static MyEntity CreateMyEntity()
    {
        return new MyEntity { MyEntityId = Guid.NewGuid() };
    }
}

数据库将ID字段限制为PRIMARY KEY CLUSTERED

2 个答案:

答案 0 :(得分:1)

可能你有这个:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public GUID GUIDField { get; set; }

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]行告诉EF自己设置GUID值。删除该属性,你就完成了。

答案 1 :(得分:0)

您是否尝试过这样设置您的实体:

public class SomeEntity 
{
    public SomeEntity() 
    {
        Id = Guid.NewGuid();
    }
    public Guid Id { get; set; }
}