我有一个属性对象,我想从最新的存储库集合中删除它。或者我可以说在保存到数据库之前将其分离。有一个Property
表是主要的,历史记录和详细信息表通过共享Property
作为关键字与PropertyId
相关联。当我从存储库中分离对象并尝试保存它时,会导致错误。
这样做。
Repository.Detach(P);
错误
Repository.SaveChanges();
错误:
INSERT语句与FOREIGN KEY约束“FK_History_Property”冲突。
冲突发生在数据库“database”,表“dbo.Property”,列'PropertyId'中 声明已经终止。
答案 0 :(得分:1)
在删除记录之前,尝试从其他表中删除引用您要删除的记录的主键的记录。
例如:
交易表
TransactionID DateOfTransaction CustomerID
1 11/15/11 1
2 11/15/11 2
3 11/15/11 15
4 11/15/11 3
交易明细
TransactionDetailID TransactionID ItemID Quatity
1 1 43 15
2 1 32 2
3 2 43 89
4 4 32 12
TransactionID
这里是一个外键(来自其他表的主键)。在删除事务表上的父记录之前,必须首先删除引用其PrimaryKey的所有记录,以避免 FOREIGN KEY CONSTRAINT ERRORS
例如:
如果要从数据库中删除事务1,则必须先删除事务详细信息(事务详细信息1和2),然后才能删除transactionID 1
答案 1 :(得分:0)
我认为你的意思是使用
Repository.DeleteObject(P);
接着是
ObjectContext.SaveChanges();
当然,假设您正在使用支持DbContext模型的EntityFramework的某些更高版本。
在早期版本中,可以通过执行类似
之类的操作在存储库级别或ObjectContext级别进行存储库修改ObjectContext.DeleteObject(P);
接着是
ObjectContext.SaveChanges();