关于EF链接数据库的问题

冷风吹得鸡鸡凉丶 2018-04-10 12:11:34
我使用EF连接数据库出现了一个问题,就是链接后没有了主外键关系,数据库里是写好主外键关系的,链接其他表都可以,就是链接这几张表主外键关系不见了


求大神解答
...全文
439 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
大概问题已经找到了,数据库表的外键链接的不是主键而是另一个表的唯一键,导致转到EF后不能显示表关系,我尝试了很多种可能性,发现原因在这一块,希望有知道这个方面具体原因的大牛能科普一下。还是要谢谢月神大佬的帮助。
  • 打赏
  • 举报
回复
引用 11 楼 hanjun0612 的回复:
[quote=引用 9 楼 is_my_self 的回复:]
重复外键?是指我这个表的两个外键吗?这两个不是同一外键,一个叫one,一个叫two

抱歉,是我看错了。
既然不是重复外键,主键也存在。
那你打开外键约束看看是不是外键约束信息有问题。绑定的表和字段都确认一下
[/quote]
这几张表的外键全绑定的不是主键,而是一个列,这个列设置了唯一键,在数据库的视图里这些关系都是正确的
正怒月神 2018-04-10
  • 打赏
  • 举报
回复
引用 9 楼 is_my_self 的回复:
重复外键?是指我这个表的两个外键吗?这两个不是同一外键,一个叫one,一个叫two
抱歉,是我看错了。 既然不是重复外键,主键也存在。 那你打开外键约束看看是不是外键约束信息有问题。绑定的表和字段都确认一下
  • 打赏
  • 举报
回复
引用 9 楼 is_my_self 的回复:
[quote=引用 7 楼 hanjun0612 的回复:]
[quote=引用 5 楼 is_my_self 的回复:]

那些没有唯一键约束的表我用EF全都没问题,所以我在想是不是因为唯一键所导致的

你把这个图发出来,我就明白了。。。。
因为你设置了重复的外键,也就是说表里有2个字段同时指向了另一个表。
这会导致ef生成model时,无法识别。按照下面的解决就行了
https://blog.csdn.net/hanjun0612/article/details/52838692[/quote]
重复外键?是指我这个表的两个外键吗?这两个不是同一外键,一个叫one,一个叫two[/quote]
one和two都对应着不同的表
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
[quote=引用 5 楼 is_my_self 的回复:] 那些没有唯一键约束的表我用EF全都没问题,所以我在想是不是因为唯一键所导致的
你把这个图发出来,我就明白了。。。。 因为你设置了重复的外键,也就是说表里有2个字段同时指向了另一个表。 这会导致ef生成model时,无法识别。按照下面的解决就行了 https://blog.csdn.net/hanjun0612/article/details/52838692[/quote] 重复外键?是指我这个表的两个外键吗?这两个不是同一外键,一个叫one,一个叫two
正怒月神 2018-04-10
  • 打赏
  • 举报
回复
但是这里,我要说一句,由于是额外的添加了属性。 所以你最好是自己维护这个ef的model,而不是让ef帮你生成。 不然以后数据库变动,ef就会把你的model全部删除再重新创建。你之前的标签和约定都没了。
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
[quote=引用 3 楼 is_my_self 的回复:] [quote=引用 2 楼 hanjun0612 的回复:] 展开导航属性看一下。 或者直接到edmx下 展开 .tt文件找到对应的 cs文件, 然后看他们是否有外键关系 , public virtual ICollection<。。。> 。。。 { get; set; } 这些之类
没有,tt文件里也没有主外键关系,属性导航已经是展开的了。 我在想是不是因为唯一键所导致的[/quote] 你没有设置主键吗?我记得必须要有主键[/quote] 有主键的,主键外键都存在
  • 打赏
  • 举报
回复

那些没有唯一键约束的表我用EF全都没问题,所以我在想是不是因为唯一键所导致的
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
展开导航属性看一下。 或者直接到edmx下 展开 .tt文件找到对应的 cs文件, 然后看他们是否有外键关系 , public virtual ICollection<。。。> 。。。 { get; set; } 这些之类
没有,tt文件里也没有主外键关系,属性导航已经是展开的了。 我在想是不是因为唯一键所导致的
正怒月神 2018-04-10
  • 打赏
  • 举报
回复
引用 5 楼 is_my_self 的回复:
那些没有唯一键约束的表我用EF全都没问题,所以我在想是不是因为唯一键所导致的
你把这个图发出来,我就明白了。。。。 因为你设置了重复的外键,也就是说表里有2个字段同时指向了另一个表。 这会导致ef生成model时,无法识别。按照下面的解决就行了 https://blog.csdn.net/hanjun0612/article/details/52838692
正怒月神 2018-04-10
  • 打赏
  • 举报
回复
展开导航属性看一下。 或者直接到edmx下 展开 .tt文件找到对应的 cs文件, 然后看他们是否有外键关系 , public virtual ICollection<。。。> 。。。 { get; set; } 这些之类
正怒月神 2018-04-10
  • 打赏
  • 举报
回复
引用 3 楼 is_my_self 的回复:
[quote=引用 2 楼 hanjun0612 的回复:] 展开导航属性看一下。 或者直接到edmx下 展开 .tt文件找到对应的 cs文件, 然后看他们是否有外键关系 , public virtual ICollection<。。。> 。。。 { get; set; } 这些之类
没有,tt文件里也没有主外键关系,属性导航已经是展开的了。 我在想是不是因为唯一键所导致的[/quote] 你没有设置主键吗?我记得必须要有主键
  • 打赏
  • 举报
回复
emmmmmmmmmmmmmmmmmm大牛呢,,,,,

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧