首页 新闻 会员 周边

EF Fluent API配置,如何指定参照列

0
悬赏园豆:20 [待解决问题]

两张表 t1(a,b,c),t2(d,e,f)

t1与t2是一对多关系,现在想配置一对多关系,t2中配置了导航属性,现在t2的e作为外键,参考键是t1的b(b不是主键!!!) 该怎么配置呢?

 

因为默认情况下 HasRequired(...).WithMany().HasForeignKey()这种方法,默认外键只能参照t1的主键,并无法指定 t1中某列作为外键的参照列啊

Finder~的主页 Finder~ | 初学一级 | 园豆:11
提问于:2018-04-03 08:47
< >
分享
所有回答(2)
0

这得先问一个问题,哪一本书上说过,外键可以不是主键的?

Entity Framework 也要符合基本法啊。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-04-03 09:19

只是有这样的需求而已,建表的时候,有业务逻辑的列没有设置为主键,不是主键,但也添加了唯一约束。

支持(0) 反对(0) Finder~ | 园豆:11 (初学一级) | 2018-04-03 09:48

@##Finder&: 不需要使用业务逻辑列进行关联,主键已经唯一了。

这种需求你可以考虑一下是否是必要的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2018-04-03 09:58

w有点没懂,外键必须是主键吗?

支持(0) 反对(0) 猝不及防 | 园豆:2781 (老鸟四级) | 2018-04-03 11:49

@猝不及防: 可以不是,但要求:一是Unique,二是Key。

那么请问除了Primary key之外,再添加一个这样的Field的意义何在呢?嫌硬盘空间太大?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2018-04-03 12:12

@爱编程的大叔: 其实我觉得数据库不太需要外键,什么一对多,多对多关系这样更没什么意义,自己把表设计好了就行了呗,不都在表的设计里吗

支持(0) 反对(0) 猝不及防 | 园豆:2781 (老鸟四级) | 2018-04-03 17:07

@爱编程的大叔: 首先多谢你的建议,关于用逻辑主键还是业务主键~ 我个人理解的不是太透...现在我只想寻求一下贴出来的问题的解决办法~

支持(0) 反对(0) Finder~ | 园豆:11 (初学一级) | 2018-04-03 18:14
0

试试 HasRequired(...).WithMany().Map(t1 => ta.MapKey("b"))

dudu | 园豆:31003 (高人七级) | 2018-04-03 09:52

多谢你的建议,但是我试了一下,这样配语法上没错,但是建库的时候就报错了~

支持(0) 反对(0) Finder~ | 园豆:11 (初学一级) | 2018-04-03 18:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册