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中包括九种图:用例图.类图.对象图.状态图.时序图.协作图.活动图. ...
随机推荐
- 批处理命令行CMD启动停止重启IIS的命令
原文:批处理命令行CMD启动停止重启IIS的命令 启动IIS: net start iisadmin (IIS的整个服务) net start w3svc (WWW网页WEB服务) ...
- HDU 5052 Yaoge’s maximum profit 光秃秃的树链拆分 2014 ACM/ICPC Asia Regional Shanghai Online
意甲冠军: 特定n小点的树权. 以下n每一行给出了正确的一点点来表达一个销售点每只鸡价格的格 以下n-1行给出了树的侧 以下Q操作 Q行 u, v, val 从u走v,程中能够买一个鸡腿,然后到后面卖 ...
- sql小总结
---------------------------------------------------------------------------------------------------- ...
- js中的open和showModalDialog
一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法:window.open(pageURL,name,p ...
- 图片 Base64码 转换
import sun.misc.BASE64Decoder; private String getBase64Picture(String imgBase64Str) { FileOutputStre ...
- MD5算法的原理与实现
***********************************************声明************************************************ 原创 ...
- three.js 来源目光(十三)Math/Ray.js
商域无疆 (http://blog.csdn.net/omni360/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:商域无疆 - 本博客专注于 敏捷开发 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(10)- VSS源代码管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ( ...
- crm使用soap删除实体
//C# 代码: //DeleteEntityRequest request = new DeleteEntityRequest(); //request.LogicalName = "ne ...
- JavaScript 数组的indexOf()、remove()、splice() , pop()方法
js中,按照值删除数组中的某个元素 Array.prototype.indexOf = function(val) { for (var i = 0; i < this.l ...