EF里实体关系配置的方法
来源:互联网 发布:stn快报淘宝店 编辑:程序博客网 时间:2024/06/06 12:47
EF里的实体关系配置分为Has和With系列的方法:Optional 可选的、Required 必须的、Many 多个。举例:
/// <summary>
/// 用户照片类
/// </summary>
public class PersonPhoto
{
[Key]
public int PersonId { get; set; }
public byte[] Photo { get; set; }
public string Caption { get; set; } //标题
public Person PhotoOf { get; set; }
}
当然,也需要给Person类添加PersonPhoto的导航属性,表示和PersonPhoto一对一的关系:
public PersonPhoto Photo { get; set; }
A.HasRequired(a => a.B).WithOptional(b => b.A);
这里的a=>a.B是lambda表示写法,就是找到A类里的导航属性B。命名a不固定,可以随意,q=>q.B也是可以的。但是B是A类的属性,故习惯用小写a。
Has方法:
- HasOptional:前者包含后者一个实例或者为null
- HasRequired:前者(A)包含后者(B)一个不为null的实例
- HasMany:前者包含后者实例的集合
With方法:
- WithOptional:后者(B)可以包含前者(A)一个实例或者null
- WithRequired:后者包含前者一个不为null的实例
- WithMany:后者包含前者实例的集合
上面一句配置意思就是A类包含B类一个不为null的实例,B类包含A类一个实例,也可以不包含。最标准的一对一配置。ok,现在试着写下上面Person类和PersonPhoto类的一对一的关系如何配置:
this.HasRequired(p => p.PhotoOf).WithOptional(p => p.Photo);
再跑下程序,数据库就生成了,是一对一的关系。Person表可以没有对应的PersonPhoto表数据,但是PersonPhoto表每一条数据都必须对应一条Person表数据。意思就是人可以没有照片,但是有的照片必须属于某个人。关系配置是这样的效果,其实可以随便改,也可以配置成每个人都必须有对应的照片。把上面的WithOptional改成WithRequired,对应到数据库里就是null变成了not null。
- EF里实体关系配置的方法
- EF里一对一、一对多、多对多关系的配置和级联删除
- EF实体间多对多的关系
- EF实体类的枚举属性映射设计方法
- 【EF系列】EntityFrameWork实体关系映射
- 针对实体编程不针对数据库编程 -EF里的增删改查
- EF之Code First使用Fluent API设置实体之间的关系
- 如何使用EF优雅的配置一对一的关系
- ofbiz总结——实体里的关系名称
- ADO.NET EF 中的实体修改方法
- EF 生成实体类的同时生成自定义扩展类的模板编写方法
- EF实体类指定部分属性不映射成数据库字段的方法
- 2步解决EF生成实体类无注释问题的快捷方法,亲测成功
- EF实体框架需要学习的地方
- 实体数据模型 EF的简单使用
- Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例
- EF使用EntityTypeConfiguration配置映射关系
- EF使用EntityTypeConfiguration配置映射关系
- 关于报表制作需要生成Office2007以上版本文件的注意点
- 关于谷歌浏览器兼容问题
- 哈夫曼树的基本操作,(树的建立,带权路径长度,哈夫曼编码)
- 欢迎使用CSDN-markdown编辑器
- Java面试题以及知识点整理(1)
- EF里实体关系配置的方法
- 使用pyinstaller将Python3.6文件打包成可执行文件
- jquery easyui DataGrid 数据表格 属性
- vue过渡动画
- Java中介者模式
- 创建存储过程 /////调用存储过程
- AndroidStudio使用PullToRefresh下拉上拉刷新框架
- git常用命令
- JAVA断言