EF 关系描述
网络上常常看到有ef 1对1 1对多等关系的描述,按照我的理解,其根本就是为了呈现出一个视图,我最近设计了一个ef关系,请大家看一看。
需求描述
在gps车辆信息管理中,有个开户需求,其根本就是三种关系的对应,车辆信息,sim卡信息,以及终端信息,这三个实体是一一对应的,一旦开户,就需要三种信息。
先设计三种关系实体
/// <summary>
/// 实体模型抽象类
/// </summary>
public abstract class DbSetBase : IDbSetBase
{
/// <summary>
/// 构造函数
/// </summary>
public DbSetBase()
{
Id = Guid.NewGuid();
CreatedDate = DateTime.Now;
Deleted = false;
}
/// <summary>
/// 唯一Id
/// </summary>
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedDate { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdatedDate { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public bool Deleted { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}
/// <summary>
/// 车辆数据
/// </summary>
[Table("S_VehicleInfo")]
public class VehicleInfo : DbSetBase
{
/// <summary>
/// 车牌号
/// </summary>
public string VehicleNo { get; set; }
/// <summary>
/// 车牌颜色
/// </summary>
public VehicleColor Color { get; set; }
/// <summary>
/// 企业信息
/// </summary>
public Guid EnterpriseId { get; set; }
/// <summary>
/// 企业信息
/// </summary>
[ForeignKey("EnterpriseId")]
public virtual Enterprise Enterprise { get; set; }
/// <summary>
/// 使用状态
/// </summary>
public UsingType UsingType { get; set; }
/// <summary>
/// 开户信息
/// </summary>
public virtual OpenAccount Account { get; set; }
/// <summary>
/// 所属车队
/// </summary>
public Guid? CompanyId { get; set; }
/// <summary>
/// 所属车队
/// </summary>
[ForeignKey("CompanyId")]
public virtual Company Company { get; set; }
}
/// <summary>
/// 终端信息
/// </summary>
[Table("S_TerminalInfo")]
public class TerminalInfo : DbSetBase
{
/// <summary>
/// 终端Id
/// </summary>
public string TerminalNo { get; set; }
/// <summary>
/// 终端类型
/// </summary>
public string TerminalType { get; set; }
/// <summary>
/// 使用状态
/// </summary>
public UsingType UsingType { get; set; }
/// <summary>
/// 开户信息
/// </summary>
public virtual OpenAccount Account { get; set; }
}
/// <summary>
/// Sim信息
/// </summary>
[Table("S_SimInfo")]
public class SimInfo : DbSetBase
{
/// <summary>
/// 手机号
/// </summary>
public string PhoneNo { get; set; }
/// <summary>
/// Sim卡号
/// </summary>
public string SimNo { get; set; }
/// <summary>
/// 使用状态
/// </summary>
public UsingType UsingType { get; set; }
/// <summary>
/// 开户信息
/// </summary>
public virtual OpenAccount Account { get; set; }
}
/// <summary>
/// 开户信息
/// </summary>
[Table("OpenAccount")]
public class OpenAccount : DbSetBase
{
/// <summary>
/// 终端信息
/// </summary>
public virtual TerminalInfo Terminal { get; set; }
/// <summary>
/// 车辆信息
/// </summary>
public virtual VehicleInfo Vehicle { get; set; }
/// <summary>
/// Sim信息
/// </summary>
public virtual SimInfo Sim { get; set; }
/// <summary>
/// 注册时间
/// </summary>
public DateTime? RegisterTime { get; set; }
/// <summary>
/// 是否注册
/// </summary>
public bool? IsRegister { get; set; }
}
}
,在通过 Fluent Api设计其对应关系:
modelBuilder.Entity<OpenAccount>().HasRequired(a => a.Vehicle).WithOptional(b => b.Account).Map(m => m.MapKey("VehicleId"));
modelBuilder.Entity<OpenAccount>().HasRequired(a => a.Sim).WithOptional(b => b.Account).Map(m => m.MapKey("SimId"));
modelBuilder.Entity<OpenAccount>().HasRequired(a => a.Terminal).WithOptional(b => b.Account).Map(m => m.MapKey("TerminalId"));
这样三种对象的对应关系就完成了,开户信息表就是作为一种视图来呈现三种对象的对应。
EF 关系描述的更多相关文章
- Oracle数据库表空间与数据文件的关系描述正确的是( )
Oracle数据库表空间与数据文件的关系描述正确的是( ) A.一个表空间只能对应一个数据文件 B.一个表空间可以对应多个数据文件 C.一个数据文件可以对应多个表空间 D.表空间与数据文件没任何对应关 ...
- EF 关系规则(一对一、一对多、多对多...)
转自: http://www.cnblogs.com/dudu/archive/2011/07/11/ef_one-to-one_one-to-many_many-to-many.html Entit ...
- EF里一对一、一对多、多对多关系的配置
EF关系规则 参考文章:http://www.cnblogs.com/feigao/p/4617442.html Entity Framework 实体间的关系,一对一,一对多,多对多,根据方向性来说 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- 【EF 5】结合项目实战分析EF三大工作模式之—Database First
导读:所谓的EF的Databasefirst工作模式,是目前我们(不涉及社会领域)用的最广的一种模式,也是本次ITOO开发所采用的工作模式.本篇博客,就分析在项目中通过Database First模式 ...
- Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一)【转载】
Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一) 自从搞好了单向一对一关系,装满代码的心中塞进了挥之不去的情丝 —— 单相思.谁都知道音乐世界离不开情感,可谁又知 ...
- TOJ3660家庭关系(并查集+hash+图的连通性)
家庭关系 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交: 38 测试通过: 9 描述 给定若干家庭成员之间的关系 ...
- [TYVJ] P1017 冗余关系
冗余关系 背景 Background 太原成成中学第3次模拟赛 第4题 描述 Description Mrs.Chen是一个很认真很称职的语文老师 ......所以,当她看到学生作文里的人物关系描 ...
- UML总结4---UML九种图关系说明
转自:http://blog.csdn.NET/chenyujing1234/article/details/8173519 UML中包括九种图:用例图.类图.对象图.状态图.时序图.协作图.活动图. ...
随机推荐
- ssh无密码登陆(转)
[0]写在前面 由于ssh 实现的是免密码登陆,大致步骤是: 0.1) client通过ssh登陆到server: 0.2) server检查家目录下的.ssh文件, 并发送公钥文件 authoriz ...
- AngularJS 课程
AngularJS 教程(点我) AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 能够构建一个单一页面应用程序(SPAs:Single Page Application ...
- Mencached使用
Mencached使用小记 该文章简单记录一下在Windows平台下安装与配置Memcached的方法,Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. ...
- 标签(Tag)的各种设计方案
标签(Tag)的各种设计方案 首先,标签(Tag)是什么? 我的理解:用来具体区分某一类内容的标识,和标签类似的一个概念是分类(Category),有一个示例可以很好的区分它们两个,比如人类分为:白种 ...
- SharePoint 如何使自己的网页自动跳转
SharePoint 如何使自己的网页自动跳转 SharePoint自动制作自己的网页跳的很easy,只有在页面上要添加一个Web部分--内容编辑器,对应的js代码就可以. ...
- 为什么数据线easy糟糕
一个好的设计可以帮助解决问题似乎无关紧要豪. 两天前M3数据线被破坏.在弯附近的电话插口可以充电.一松就充不了电了. 今天突然想到每次充电的时候用手机发信息.玩游戏都特别不方便,才想到为什么数据线ea ...
- hdu Online Judge
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1073 数据判断,主要是如何判断WA和PE,吸收字符! 代码: #include <stdio.h ...
- JBPM——MyEclipse开发环境的搭建
第一次接触JBPM我不知道如何在工程中的应用.查了一些资料.大约在JBPM随着时代的发展有一定的了解.首先JBPM它是JBoss件平台的一个组成部分.是一个灵活的,易扩展的工作流管理系统,仅仅只是这个 ...
- java_OutOfMorryError 内存溢出(replaceAll)
最近在使用string类中的replaceAll函数时碰到这个错误,由于string长度比较长,文本文档9M多,可以增加jvm的内存大小解决. 下面是一篇对OutOfMorryError错误的一些处理 ...
- axure团队合作开发原型图
谁是人画或其他原型图的头,但在基本制度的发展时,.我们分配一些人画的原型,其他部分干. 再画一个原型不再是一个人画,一起画,假设大家都各自画自己那一部分.最后再由一个人来整合的画.是非常麻烦. 咱平时 ...