EF映射没有外键怎么办

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

    最近在做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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 41
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值