1 问题回放
最近同事在使用EF DBFIRST进行实体框架开发的时候,遇到了一个奇怪的问题,提示主外键约束存在问题,但是该表并没有设置外键,而且软件提示的数据库表名不存在,但是提示的数据库表名和我EF实体名称完全不一致,最后经过分析,找出了问题并解决,在此做一个记录,方便日后查阅!
2 问题产生原因
出现这种情况的主要原因是,在创建了数据库表并设置完主键以后,在后期的开发过程中人为的修改了数据库表名,造成之前生成的主键名称和现在的表名对不上,而EF在动态生成表名的时候会从EF中的主键名称中去查找表名,导致系统在修改表名以后出现还使用的是之前的主键名称,在生成SQL的时候,EF还是会按照之前的主键名称来生成表名,造成EF中的表名和实际的实体名称并不一致!
3 问题解决方案
大家记得在修改表名以后,可以删除之前的主键,再重新创建主键来解决该问题,或者手动修改主键名称也可以解决该问题!