gpt4 book ai didi

entity-framework - 处理非身份主键的生成

转载 作者:行者123 更新时间:2023-12-01 06:46:14 24 4
gpt4 key购买 nike

我们目前有没有主键标识的表。由于互操作性,改变它的成本太高了。

我正在考虑处理 ObjectContext 的 SavingChanges 事件以设置其值。

(伪代码)

void SavingChanges(context)
{
foreach (var entity in context)
{
if (entity.HasIdentity) continue;

entity.PrimaryKey = GetNextPrimaryKey(entity.Type);
}
}

我只能想到使用单独的连接来完成此操作。是的,GetNextPrimaryKey 将被优化以减少往返次数,但我想这足以解释整个想法。

它会起作用吗?我应该尝试不同的东西吗?

最佳答案

这取决于方法 GetNextPrimaryKey 中的逻辑。

如果您的方法在多个线程中执行,那么您将有机会将相同的键分配给多个对象。

但是,如果您的 GetNextPrimaryKey 推进您的 key 并始终返回一个新 key ,无论它是否被使用,那么就没有问题。

但是如果你的逻辑只是简单的找出上次使用的key然后做key+1,那么在多线程的情况下或者web应用中,就会出现冲突。

最好是使用某种存储过程并始终从 SP 返回一个新 key ,因此在并行执行 GetNextPrimaryKey 的情况下不会有任何问题。

关于entity-framework - 处理非身份主键的生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5090941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com