关闭

EF映射没有外键怎么办

844人阅读 评论(41) 收藏 举报
分类:

      在一些数据库的设计是没有外键的,为了减少测试的成本,我们就把外键给去掉了,而在程序里加上外键的约束。

    最近在做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 和三个路径。填入正确。把外键也加上了,最后重新生成,运行程序就没事了。










0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:46702次
    • 积分:8099
    • 等级:
    • 排名:第2494名
    • 原创:109篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3010条
    最新评论