
一:直接利用导航属性生成外键
DBFIrst是外键生成的导航属性,反过来如果用code first可以根据导航属性来生成外键
缺点:不是很灵活,外键只在数据库有,模型里边没有,所以这种情况做添加的时候不能直接赋值,只能通过导航属性来间接添加外键(因为外键是通过导航属性维护的),做join查询的时候根本没法点出外键字段,链接查询只能通过导航属性。
当然你可以把字段名字写成和导航属性生成的外键名重名,这样也可以巧妙的做到model里边用到外键
二:利用ForeignKey特性配置外键(也是需要配合导航属性的)
这样就可以自己去维护外键字段,也就是模型中有外键,添加的时候可以直接添加,join可以点出来自己的字段
两种做法
1: ForeignKey配置到外键上,这个时候名字要写成导航属性的名字
[ForeignKey("userinfo")]
public int UserId { get; set; }
public virtual UserInfo userinfo { get; set; }
2: ForeignKey配置导航属性上面,这个时候名字写成外键的名字
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual UserInfo userinfo { get; set; }
注意这个是属性不是字段!,要加get,set可能会因为很久没有用,就忘记了,写成字段了,这样就不行了。
三:Fluent API,在重写OnModelCreating方法通过lamdba来配置
1:先配置多的一方(按照多对一方式来配置)
modelBuilder.Entity
2:先配置一的一方(按照一对多方式来配置,相当于就是换个顺序)
modelBuilder.Entity
项目下载地址:https://download.tnblog.net/resource/index/50a5130aab0c421a8f60ed038143ffbb
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

