在一些数据库的设计是没有外键的,为了减少测试的成本,我们就把外键给去掉了,而在程序里加上外键的约束。
最近在做ITOO,发现最新版本的数据库里少缺少了一个外键,而且更新到程序里的EF实体模型也就和原先的不搭。程序自然就生成失败了。但是问题需要解决啊,所以就去看了看EF映射的实体文件,发现了可以做文章的地方。
解决方案
1、在EF映射的实体文件中,先找到缺少外键的那个实体类文件。比如我要找的类文件是basicstudententities.cs
2、打开找到的实体类文件,在里面添加属性。比如:我缺少的是 basicclassentities的外键,就添加红圈中的代码。注意如果关系是1:1就是实体类型,如果是1:N的关系,就是ICollection对象集合的类型了。
3、找到后缀为diagram的文件,根据自己需求填入相应的字符串。比如我添的是红圈的那一行。
最后重新生成解决方案,生成成功。可是新的问题又来了。
只要涉及到EF映射的lambda表达式时,就报错: 无法加载 源数据资源。
我一看就头疼了,知道这是改了EF实体模型的原因。我愁啊。可是该解决还得解决啊。
问题出现原因:由于自己添加EF实体的输入的名称是Model。所以有了以下区别
区别:在配置文件里的三个路径: Model.csdl,Model.ssdl 以及Model.msl 和最开始的BasicModel.csdl,BasicModel.ssdl 以及BasicModel.msl 不一样,于是修正,重新生成,看能不能成功。如果不成功的话往下看。
原始配置文件的内容
最后一步,把之前的EF实体模型删了,重新建立,输入好正确的名字。包括name 和三个路径。填入正确。把外键也加上了,最后重新生成,运行程序就没事了。