如何在EF5中实现KeyTable样式标识方法
使用数据库中的表来存储下一个Id,并在每次需要LightSpeed中的新Id块时推进该值
我相信这就像Oracle序列。
这感觉应该很简单(就像在LightSpeed中一样)。这为ORM提供了一种进行批量插入的简单方法,即它可以一次获得10个身份,然后对数据库进行批量插入。
我使用EF5 / WCF RIA服务(最新)与Silverlight交谈。该项目的其余部分使用批量插入SSIS内容。SL项目执行一些插入操作。所以我需要遵循这个约定。
发布于 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 First的https://stackoverflow.com/a/5924487/5351
这里有一个类似的答案。https://stackoverflow.com/a/5277642/5351
以下是关于使用EF实现HiLo生成器(一个更健壮的key gen模式)的一些发现:
Hi/Lo模式描述了一种在客户端而不是数据库上生成安全ids的机制。在这种情况下,安全意味着没有冲突。这种模式之所以有趣,有三个原因:
来自http://joseoncode.com/2011/03/23/hilo-for-entityframework/
https://stackoverflow.com/questions/13251136
复制相似问题