gpt4 book ai didi

c# - 在 .NET Entity Framework 中调用 SaveChanges 时出现 InvalidOperationException

转载 作者:可可西里 更新时间:2023-11-01 07:53:02 32 4
gpt4 key购买 nike

我正在尝试学习如何使用 Entity 框架,但遇到了一个我无法解决的问题。我正在做的是遍历我拥有的电影列表,并将每一部电影插入到一个简单的数据库中。

这是我正在使用的代码

private void AddMovies(DirectoryInfo dir)
{
MovieEntities db = new MovieEntities();
foreach (DirectoryInfo d in dir.GetDirectories())
{
Movie m = new Movie { Name = d.Name, Path = dir.FullName };
db.AddToMovies(movie);
}
db.SaveChanges();
}

当我这样做时,我在读取 db.SaveChanges() 时得到一个异常。

The changes to the database were committed successfully, but an error occurred while updating the object context. The ObjectContext might be in an inconsistent state. Inner exception message: AcceptChanges cannot continue because the object's key values conflict with another object in the ObjectStateManager. Make sure that the key values are unique before calling AcceptChanges.

我无法找出导致此问题的原因。我的数据库表包含三列
Id int 自增
名称 nchar(255)
路径 nchar(255)

更新:我检查了我的 edmx 文件,并且 SSDL 部分具有建议的 StoreGeneratedPattern="Identity"。我还关注了博客文章,并尝试按照那里的建议在 CSDL 中添加 ClientAutoGenerated="true"和 StoreGenerated="true"。这导致了编译错误(错误 5:不允许使用 'ClientAutoGenerated' 属性。)。由于这篇博文是 2006 年的,并且它有一个指向后续文章的链接,我认为它已经被更改了。

但是,我无法阅读后续帖子,因为它似乎需要一个 msdn 帐户。

最佳答案

我找到了解决办法。

发生的事情是,当我创建我的表时,我忘记添加主键并将 (Is Identity) 属性设置为 yes。然后我创建了我的实体模型并遇到了这个错误。

我回去修复了我的数据库表,但我仍然遇到奇怪的异常。最终解决问题的方法是将实体移除,待表修复后重新创建。

没有更多异常(exception):)

关于c# - 在 .NET Entity Framework 中调用 SaveChanges 时出现 InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1008582/

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