我正在使用EF 6并尝试将我现有的项目转换为使用存储过程进行所有插入,更新和删除。
我有一个包含一组继承表的现有EDMX。
我有一个基表事务,其中包含带有标识插入的主键。
然后我有各种子表将事务设置为基表。这些表有一个Id字段,它是该表的主键和事务的外键 - 没有标识插入。
这与EF开箱即用。但是,当切换到存储过程时,EF会因为我的外键约束而首先调用子sproc失败,因为它试图插入id为0的子表。
答案 0 :(得分:0)
我能够通过使子表的存储过程获取所有数据(包括公共数据到基表)来解决这个问题。
然后先将此sproc插入基表并存储生成的id。然后插入子表并返回新的id。
因为层次结构中的所有表都需要sproc映射,所以你可以放弃使基表抽象(我不能),所以我创建了没有做任何事情的伪sprocs并将基表映射到虚拟的sproc。