gpt4 book ai didi

entity-framework - Entity Framework 和标识插入

转载 作者:行者123 更新时间:2023-12-04 07:26:37 25 4
gpt4 key购买 nike

我正在编写一个导出数据并将其序列化为文件以归档旧数据的应用程序。

有时可能出于某种原因需要重新导入选择的数据。由于标识列,这一直给我带来问题。

为了解决这个问题,我在事务范围内执行工作。为该表设置身份插入,然后更新我的事务,例如

using (TR.TransactionScope scope = new TR.TransactionScope(TR.TransactionScopeOption.RequiresNew))
{
// allow transaction nbr to be inserted instead of auto generated
int i = context.ExecuteStoreCommand("SET IDENTITY_INSERT dbo.Transactions ON");

try
{
// check if it already exists before restoring
var matches = context.Transactions.Where(tr => tr.transaction_nbr == t.transaction_nbr);

if (matches.Count() == 0)
{
Transaction original = t;
context.Transactions.AddObject(original);
context.SaveChanges();
restoreCount++;

但是我收到一个异常说:

Explicit value must be specified for identity column in table either when IDENTITY_INSERT >is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity >column.

我假设 Entity Framework 试图在不指定列的情况下进行某种 block 插入。无论如何在 Entity Framework 中执行此操作。

该对象很大并且有许多关联的实体,这些实体也被反序列化并需要插入,所以我想让 Entity Framework 尽可能地这样做,因为它会节省我很多额外的工作。

感谢任何帮助。

最佳答案

Gert Arnold - 这就是我的问题的答案。谢谢。

我确实在其他地方读过,并在对象浏览器中设置了值,所以认为这就足够了。我还通过右键单击 .edmx 和打开方式仔细检查了该值,以按照另一篇文章中的建议在 XML 编辑器中查看详细信息。

当我最初检查 XML 编辑器中的值时,它也是“无”,所以假设这不是我的问题。但我想只要进入那里并保存就可以在第一时间解决问题。

在我必须从数据库更新模型后的第二次,我不得不根据您的建议重复此步骤。但是第二次,StoreGeneratorPattern 与对象浏览器中设置的不同,因此我需要在 XML 中手动更改它。

在我的情况下,这很好,因为通常情况下,记录是通过另一种机制插入的,所以身份只是妨碍我,因为身份将始终作为旧的(曾经存在的)身份值插入,该值暂时被插入恢复。

感谢您的帮助。

关于entity-framework - Entity Framework 和标识插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18715475/

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