c# – 为什么EntityCollection.Remove()会导致SaveChanges()引发
|
使用以下数据库架构:
CREATE TABLE master (
id integer primary key autoincrement,title text);
CREATE TABLE slave (
id integer primary key autoincrement,master_id integer not null,title text,foreign key (master_id) references master (id));
我创建了一个sqlite数据库,然后我用它来创建一个Entity Framework .edmx文件. 然后我添加一个主记录和一个奴隶记录,工作正常,然后我尝试删除从记录,但这引发了一个异常,我不知道为什么. var ctx = new blaEntities();
var newMaster = master.Createmaster(0);
ctx.masters.AddObject(newMaster);
var newSlave = slave.Createslave(0,0);
newMaster.slaves.Add(newSlave);
ctx.SaveChanges(); // works fine,both id and master_id properties of newMaster
// and newSlave are then set with generated values.
newMaster.slaves.Remove(newSlave);
ctx.SaveChanges(); // InvalidOperationException is raised
异常的消息是:
我究竟做错了什么? 编辑: 这是由EF Createslave(…)方法生成的: public static slave Createslave(global::System.Int64 id,global::System.Int64 master_id)
{
slave slave = new slave();
slave.id = id;
slave.master_id = master_id;
return slave;
}
解决方法
从属表中仍有一个从属对象在masterId列中没有设置值.
尝试使用ctx.DeleteObject(newSlave)来摆脱它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- S5PV210的NandFlash应用(一)
- c# – 为Windows.Forms的十六进制查看器控件的建议?
- ruby-on-rails – Rails客户端/服务器端使用单个模板(Handl
- vue+axios 前端实现的常用拦截的代码示例
- c# – MSpec:如何使静态变量线程安全?
- cocos2d-x 3.3 之卡牌设计 NO.6 Loading界面(异步加载图片
- 项目开发笔记-2015.12.21-swift
- c# – 如何从DataReader中检索SqlGeography类型时解决Inval
- 如何使用HttpWebRequest创建一个C#应用程序就像fiddler一样
- 在Ruby中使用(:send)关键字参数?
