我想创建一个以'客户端生成'GUID作为主键的模型。我希望自动生成Guid,但不要在数据库上,所以在我坚持之前我就知道ID,这对我的域模型很重要。
如何设置:
class MyEntity {
public Guid ID { get; set; }
}
所以我可以......
var newEntity = new MyEntity();
transmitIDBeforePersisting(newEntity.ID);
context.MyEntities.Add(newEntity);
context.SaveChanges()
我如何设置MyEntity.ID,以便在我调用new时自动生成,但仍然可以作为主键正常工作,具有导航属性等?
这类似于using Guid as PK with EF4 Code First,但不是由Store / DB生成的。
答案 0 :(得分:9)
在构造函数中设置ID
属性的值,并使用[DatabaseGenerated(DatabaseGeneratedOption.None)]
属性上的ID
属性:
public class MyEntity
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid ID { get; set; }
public MyEntity()
{
ID = Guid.NewGuid();
}
}