首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF与KeyTable序列样式主键

EF与KeyTable序列样式主键
EN

Stack Overflow用户
提问于 2012-11-06 20:31:56
回答 1查看 665关注 0票数 0

如何在EF5中实现KeyTable样式标识方法

使用数据库中的表来存储下一个Id,并在每次需要LightSpeed中的新Id块时推进该值

我相信这就像Oracle序列。

这感觉应该很简单(就像在LightSpeed中一样)。这为ORM提供了一种进行批量插入的简单方法,即它可以一次获得10个身份,然后对数据库进行批量插入。

我使用EF5 / WCF RIA服务(最新)与Silverlight交谈。该项目的其余部分使用批量插入SSIS内容。SL项目执行一些插入操作。所以我需要遵循这个约定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-21 18:39:54

我猜从根本上说,问题更多的是关于实体框架是否支持这种类型的密钥生成,而问题的次要部分是RIA Services是否可以与之集成。

这让我想起了NHibernate中提供的一系列密钥生成策略。

这里有一个答案,表明EF没有像NHibernate那样“开箱即用”的全面支持:

不幸的是,EF没有像NHibernate那样与

生成器非常接近的东西,尽管我听说类似的功能将包含在EF的下一个版本中。

来自HiLO for the Entity Framework

这个答案表明,截取RIA服务中的Save (特别是insert)并调用SPROC来获取新ID并不是很棘手

在保存记录之前,您只需调用存储过程获取一个值,即可将其放入上下文中被覆盖的SaveChanges()中

请参阅回答What is the best way to manually generate Primary Keys in Entity Framework 4.1 Code Firsthttps://stackoverflow.com/a/5924487/5351

这里有一个类似的答案。https://stackoverflow.com/a/5277642/5351

以下是关于使用EF实现HiLo生成器(一个更健壮的key gen模式)的一些发现:

Hi/Lo模式描述了一种在客户端而不是数据库上生成安全ids的机制。在这种情况下,安全意味着没有冲突。这种模式之所以有趣,有三个原因:

  • 它不会破坏工作单元模式(检查这个链接,然后再检查另一个)
  • 它不需要像其他数据库管理系统中的序列生成器那样进行多次往返。
  • 它生成人类可读的标识符,这与GUID技术不同。

来自http://joseoncode.com/2011/03/23/hilo-for-entityframework/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13251136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档