Entity Framework 4 Code First 是否支持 NHibernate 等身份生成器?
一年前提出的这个问题是相似的: Entity Framework 4 是否支持以下生成器id 值像 NHibernate?
但我想知道的是代码优先 CTP 是否添加了对身份生成策略的支持。如果没有,有人知道 EF 中有一个很好的扩展点来实现类似的功能吗?
我目前正在使用使用 GUID 作为标识符的模型类。使用 EF 插入时,它们保留其 Guid.Empty
初始值。我知道您可以将数据库中的列的默认值设置为 newid() ,但这违背了客户端身份生成的目的。
实体框架是否还不够成熟,无法在分布式、断开连接的系统中使用?
This question, asked a year ago, is similar:
Does the Entity Framework 4 support generators for id values like NHibernate?
But what I'd like to know is if the code first CTP adds support for identity generation strategies. If not, does anyone know a good extension point in EF to implement something similar?
I'm currently working with model classes which use GUID as the identifier. When inserting using EF they retain their Guid.Empty
initial values. I know that you can set a default value for the column in the DB to newid()
but that defeats the purpose of client-side identity generation.
Is Entity Framework just not mature enough to be used in a distributed, disconnected system?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,实体框架代码优先仍然只是 EFv4 的良好包装。没有类似 NHibernate 的生成器。如果您需要客户端 Id 生成器,则必须重写派生的 DbContext 中的 SaveChanges 并实现您自己的将 Id 分配给新实体的逻辑。
编辑:
一些高级示例:
No, Entity framework code-first is still just nice wrapper around EFv4. There are no NHibernate like generators. If you want client side Id generator you will have to override
SaveChanges
in derivedDbContext
and implement your own logic of assigning Ids to new entities.Edit:
Some high level example:
不。
我的实体框架4.1.10715由NuGet安装。
也许您可以使用属性,
请参阅(EF 4.1中支持的注释的完整列表:页面中的CTRL+F)此处。
No.
Mine Entity Framework 4.1.10715 installed by NuGet.
maybe you could use attribute
please see (The full list of annotations supported in EF 4.1 : CTRL+F in page) here.
然后使用新的 GUID ToString
and then use new GUID ToString