我是靠谱客的博主 光亮美女,最近开发中收集的这篇文章主要介绍EF多表外键关联,新增数据的时候外键错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

报错:(外键FK_Base_RoleRight_Base_Role约束错误,要求在dbo.Base_Roles表中的列名"Roles_ID"的值存在)

The INSERT statement conflicted with the FOREIGN KEY constraint “FK_Base_RoleRight_Base_Roles”. The conflict occurred in database “SAM_DB”, table “dbo.Base_Roles”, column ‘Roles_ID’.
The statement has been terminated.

原来写法:

using (TransactionScope trans = new TransactionScope())
{
	//增加角色信息
	 db.Add(info.MapTo<Base_Roles>());

	//增加角色-权限 信息   
	db.Base_RoleRight.AddRange(info.Base_RoleRight.MapToList<Base_RoleRight>());
                       
	result = db.SaveChanges();
}

SQLServer Profiler监测:

在这里插入图片描述

正确写法:(增加db.SaveChanges()????

using (TransactionScope trans = new TransactionScope())
{
     db.Add(info.MapTo<Base_Roles>());

     db.SaveChanges();

     db.Base_RoleRight.AddRange(info.Base_RoleRight.MapToList<Base_RoleRight>());
                       
     result = db.SaveChanges();
                        
     trans.Complete();
                        
     return result;
 }

SQLServer Profiler监测:
在这里插入图片描述

再来看一个用户添加的例子:


 using (TransactionScope trans = new TransactionScope())
{
 	
 		db.Base_UserInfo.Add(base_UserInfoDto.MapTo<Base_UserInfo>());

        db.SaveChanges();
                                 					
       	db.Base_UserRight.AddRange(base_UserInfoDto.Base_UserRightDtoList.MapToList<Base_UserRight>());

        db.Base_StaffOrganize.AddRange(base_UserInfoDto.Base_StaffOrganizeDtoList.MapToList<Base_StaffOrganize>());

        db.Base_UserRole.AddRange(base_UserInfoDto.Base_UserRoleDtoList.MapToList<Base_UserRole>());

        db.Base_AppendPropertyInstance.AddRange(base_UserInfoDto.Base_AppendPropertyInstanceDtoList.MapToList<Base_AppendPropertyInstance>());

        result = db.SaveChanges();

        trans.Complete();
 }

SQLServer Profiler监测:

在这里插入图片描述
结论:RPC:Completed 执行的时候SQL顺序与代码的SQL顺序不一致。通过在每行EF语句间添加db.SaveChanges()执行顺序才会一致。

最后

以上就是光亮美女为你收集整理的EF多表外键关联,新增数据的时候外键错误的全部内容,希望文章能够帮你解决EF多表外键关联,新增数据的时候外键错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部