首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架是否接受/添加未自动递增的int的数据?

实体框架是否接受/添加未自动递增的int的数据?
EN

Stack Overflow用户
提问于 2015-12-15 08:50:12
回答 2查看 152关注 0票数 0

我有一个有int的表,并且我没有为它实现自动增量。我想从我的客户端应用程序中添加数据。如果我尝试添加而没有自动递增的int,则会得到以下异常:

“System.InvalidOperationException”类型的异常发生在EntityFramework.dll中,但未在用户代码中处理 附加信息:属性'id‘是对象密钥信息的一部分,不能修改。

内部例外:

属性'id‘是对象的密钥信息的一部分,不能修改。

我不会修改任何东西的。我只是想补充一句。到底怎么回事?

编辑

根据要求,这是我的代码

代码语言:javascript
复制
var size = new IMF_Size();
            foreach (var item in sizeFromConsolidator)
            {
                if (anthill.IMF_Size.Where(w => w.Brand == item.Brand && w.Category == item.Category && w.SizeCode == item.SizeCode).Count() == 0)
                {
                    size.id = item.id;
                    size.SizeCode = item.SizeCode;
                    size.Name = item.Name;
                    size.Brand = item.Brand;
                    size.Category = item.Category;

                    anthill.IMF_Size.Add(size);
                    anthill.SaveChanges();
                }
            }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-15 11:53:06

size的构造在循环之外。

当您第一次进入size.id = item.id;行时,您的size是一个新实体。设置其属性,将其添加到anthill中,然后保存更改。

然后你再来一次循环。你又到了size.id = item.id;线。但是你还没有构建一个新的size。在这一点上,您确实在修改现有的实体。

这个例外也是这么告诉你的。将size的构造移到循环中。

票数 0
EN

Stack Overflow用户

发布于 2015-12-15 11:32:31

就像Prasad Kanaparthi说的那样,把这个放在类的优先性上给DB。

代码语言:javascript
复制
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34284642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档