Entity framework 非身份主键的句柄生成
我们目前有一些表没有主键的标识。由于互操作性,改变这一点的成本太高 我正在考虑处理ObjectContext的SavingChanges事件以设置其值 (伪代码) 我只能考虑使用单独的连接来实现这一点。是的,GetNextPrimaryKey将被优化以减少往返次数,但我想它已经足够解释整个想法了Entity framework 非身份主键的句柄生成,entity-framework,transactions,entity-framework-4,primary-key,Entity Framework,Transactions,Entity Framework 4,Primary Key,我们目前有一些表没有主键的标识。由于互操作性,改变这一点的成本太高 我正在考虑处理ObjectContext的SavingChanges事件以设置其值 (伪代码) 我只能考虑使用单独的连接来实现这一点。是的,GetNextPrimaryKey将被优化以减少往返次数,但我想它已经足够解释整个想法了 这样行吗?我应该尝试不同的方法吗?这取决于GetNextPrimaryKey方法中的逻辑 如果您的方法在多个线程中执行,那么您将有机会将同一个密钥分配给多个对象 但是,如果您的GetNextPrimar
这样行吗?我应该尝试不同的方法吗?这取决于GetNextPrimaryKey方法中的逻辑 如果您的方法在多个线程中执行,那么您将有机会将同一个密钥分配给多个对象 但是,如果您的GetNextPrimaryKey提升您的密钥并始终返回一个新密钥,无论是否使用,那么就没有问题 但如果您的逻辑只是找出最后使用的键并执行键+1,那么在多线程情况下或web应用程序中,您将遇到冲突
最好使用某种存储过程并始终从SP返回一个新密钥,这样在并行执行GetNextPrimaryKey时就不会出现任何问题。我想我应该做一个spike:)
void SavingChanges(context)
{
foreach (var entity in context)
{
if (entity.HasIdentity) continue;
entity.PrimaryKey = GetNextPrimaryKey(entity.Type);
}
}