我有一个应用程序,大部分都有一个简单的Users表。 PK,UserID,是一个Guid。我首先使用EF代码,一切都很好,使用以下代码:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserID { get; set; }
然而,在我的申请中,我实际上想要强制Guids。这是一个特例,在这个代码块之外,其他任何地方都应该按照预期从数据库中生成Guid。
我知道在我写的初始化程序中的种子函数中,我可以很好地插入ID。如何重现这些条件,以便我可以在此边缘情况下插入标识值?
答案 0 :(得分:1)
如果不是自动生成标识插入...使用Guid作为主键,然后使用默认值NewGuid()。这样,如果您不提供Guid值,则由数据库生成。
不需要SP。
修改强>
没有自动生成的id,让实体本身控制初始值。如果你在施工后设置它的值,那就没关系。
通过对相关实体类的微小更改,您可以实现您想要的效果。
class MyEntity {
public Guid EntityId { get; set; }
public MyEntity() {
EntityId = Guid.NewGuid();
}
}