带有Guid的EF 4.1 CodeFirst(不是由DB / Store生成)作为PK

时间:2011-08-24 21:56:13

标签: entity-framework entity-framework-4.1 ef-code-first

我想创建一个以'客户端生成'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生成的。

1 个答案:

答案 0 :(得分:9)

在构造函数中设置ID属性的值,并使用[DatabaseGenerated(DatabaseGeneratedOption.None)]属性上的ID属性:

public class MyEntity 
{        
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public Guid ID { get; set; }

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