EF 4.1 CodeFirst 与 Guid(不是由 DB/Store 生成)作为 PK
Posted
技术标签:
【中文标题】EF 4.1 CodeFirst 与 Guid(不是由 DB/Store 生成)作为 PK【英文标题】:EF 4.1 CodeFirst with Guid (not generated by DB/Store) as PK 【发布时间】:2011-08-24 21:56:13 【问题描述】:我想创建一个以“客户端生成”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 生成的。
【问题讨论】:
也许这个 5 小时前的回答对你有帮助:***.com/questions/7174065/… 【参考方案1】:在构造函数中设置ID
属性的值,并在ID
属性上使用[DatabaseGenerated(DatabaseGeneratedOption.None)]
属性:
public class MyEntity
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid ID get; set;
public MyEntity()
ID = Guid.NewGuid();
【讨论】:
@seth 您可能还需要使用[Key]
属性。
对于 EF fluent API,请参见:dailywebtips.blogspot.com/2012/09/…以上是关于EF 4.1 CodeFirst 与 Guid(不是由 DB/Store 生成)作为 PK的主要内容,如果未能解决你的问题,请参考以下文章