博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF框架step by step(8)—Code First DataAnnotations(2)
阅读量:7116 次
发布时间:2019-06-28

本文共 1474 字,大约阅读时间需要 4 分钟。

上一篇描述了实体内部的采用数据特性描述与表的关系。这一篇将用DataAnnotations描述一下实体之间的关系。

ForeignKey

Code first默认情况下会自动建立实体之间的关系,比如在这篇随笔中所介绍那样。

public partial class BlogUser
{
public int BlogUserId { get; set; }
public string BlogName { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
public partial class Post
{
public int PostId { get; set; }
public string PostTitle { get; set; }
public int BlogUserId { get; set; }
public virtual BlogUser BlogUser { get; set; }
}

以上这种代码写法,CodeFirst方法,在生成数据时,会在Post实体中去查找BlogUserId属性(也就是以BlogUser实体的主键),找到后,则会用此属性与BlogUser实体进行关联。如果没有找到,他会在自动创建一个列,并命名为BlogUser.BlogUserId,作为与BlogUser实体的关联属性。

用代码描述一下,将上面的代码修改成:  

 

public partial class BlogUser     {
public int BlogUserId { get; set; } public string BlogName { get; set; } public virtual ICollection
Posts { get; set; } } public partial class Post {
public int PostId { get; set; } public string PostTitle { get; set; } //期望用这个作为外键关联 public int BlogId { get; set; } public virtual BlogUser BlogUser { get; set; } }

 

但实际生成的数据表如图:

这时,可以看出,CodeFirst方法,并没有按我们所设想的那样,以BlogId做为外键,要完成这个想法,需要借助ForeignKey特性,将代码修改如下

public partial class Post     {
public int PostId { get; set; } public string PostTitle { get; set; } //期望用这个作为外键关联 public int BlogId { get; set; } [ForeignKey("BlogId")] public virtual BlogUser BlogUser { get; set; } }

这时,即可达到预期的目的。

转载地址:http://iffel.baihongyu.com/

你可能感兴趣的文章
webpack4基础 -- css处理和 scss 懒加载
查看>>
python入门—python的安装
查看>>
Java8中的 lambda 和Stream API
查看>>
【前端】书客编辑器Web版v1.0 - HTML布局
查看>>
ajax post数据发送类型Content-Type详解
查看>>
数组去重
查看>>
做一个自己的WiFi密码查看器——Android
查看>>
Webpack 4 使用指南
查看>>
iOS学习笔记20 地图(二)MapKit框架
查看>>
深度理解React项目的服务端渲染改造
查看>>
当linux报 “-bash: fork: 无法分配内存”
查看>>
同步/异步
查看>>
使用CSS实现逼真的水波纹点击效果
查看>>
[番外篇]k位精巧数
查看>>
Android-Application详解
查看>>
echarts 的使用
查看>>
iOS超全面试题,面试前看一看,不错&lt;上篇&gt;
查看>>
四个提升服务器数据安全的方法
查看>>
分分钟解决MySQL查询速度慢与性能差
查看>>
设计电商平台优惠券系统
查看>>