EF外键关联
客户里面存在客服外键
基类模型
public class ModelBase
{
public ModelBase()
{
CreateTime = DateTime.Now;
}
[Key]
public virtual int ID { get; set; }
public virtual DateTime CreateTime { get; set; }
}
客服模型
[Table("CustomerServer")]
public partial class CustomerServer : ModelBase
{
public string ServerId { get; set; }
public string ServerName { get; set; }
public string Email { get; set; }
public string Mobile { get; set; }
public virtual List<Customer> CustomerManagerFor { get; set; }
}
客户模型
[Table("Customer")]
public class Customer : ModelBase
{
[Required(ErrorMessage = "分支编号不能为空!"), MaxLength(, ErrorMessage = "分支编号不能超过4个字符!")]
public string BranchId { get; set; }
[Required(ErrorMessage = "客户编号不能为空!"), MaxLength(, ErrorMessage = "客户编号不能超过10个字符!")]
public string CustomerId { get; set; }
[Required(ErrorMessage = "客户姓名不能为空!"), MaxLength(, ErrorMessage = "客户姓名不能超过50个字符!")]
public string Name { get; set; }
[Required(ErrorMessage = "性别不能为空!")]
public int Sex { get; set; }
[Required(ErrorMessage = "生日不能为空!")]
public DateTime Birthday { get; set; }
[Required(ErrorMessage = "资金账号不能为空!"), MaxLength(, ErrorMessage = "资金账号不能超过40个字符!")]
public string FundAccount { set; get; }
[Required(ErrorMessage = "资产不能为空!")]
public decimal Assets { get; set; }
[Required(ErrorMessage = "联系方式不能为空!"), MaxLength(, ErrorMessage = "联系方式不能超过40个字符!")]
public string Contact { get; set; }
[Required(ErrorMessage = "地级市不能为空!")]
public int City { get; set; }
[InverseProperty("CustomerManagerFor")]
[Required(ErrorMessage = "客户经理不能为空!")]
public virtual CustomerServer CustomerManager { get; set; }
[Required(ErrorMessage = "开户日期不能为空!")]
public DateTime OpeningDate { get; set; }
[Required(ErrorMessage = "风险类型不能为空!")]
public int RiskType { get; set; }
[Required(ErrorMessage = "客户类型不能为空!")]
public int CustomerType { get; set; }
}
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class UniqueAttribute : ValidationAttribute
{
public override Boolean IsValid(Object value)
{
//校验数据库是否存在当前Key
return true;
}
}
在上下文进行映射
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<CrmDbContext>(null);
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Customer>().HasRequired(v => v.CustomerManager).WithMany(d => d.CustomerManagerFor).Map(v => v.MapKey("CustomerManager")).WillCascadeOnDelete(false);
}
public DbSet<Customer> Customers { get; set; }
public DbSet<CustomerServer> CustomerServers { get; set; }
查询
IQueryable<Customer> queryList = dbContext.Customers.Include("CustomerManager");
刚学EF,不懂要Include,查到的记录CustomerManager都是null,Include之后才有数据,在此标志一下
EF外键关联的更多相关文章
- 基于EF的数据外键关联查询
现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...
- Entity FrameWork对有外键关联的数据表的添加操作
前天做了一个MVC Entity FrameWork项目,遇到有外键关联的数据编辑问题.当你编辑的时候,按照正常的逻辑,把每个字段的数据都对号入座了,然后点击保存按钮,本以为会顺理成章的编辑数据,但是 ...
- Entity Framework - 理清关系 - 基于外键关联的单向一对一关系
注:本文针对的是 Entity Framework Code First 场景. 之前写过三篇文章试图理清Entity Framework中的一对一关系(单相思(单向一对一), 两情相悦(双向一对 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (29) ------ 第五章 加载实体和导航属性之过滤预先加载的实体集合和修改外键关联
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-13 过滤预先加载的实体集合 问题 你想过滤预先加载的实体集合,另外,你想使用 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (37) ------ 第六章 继承与建模高级应用之独立关联与外键关联
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-13 在基类中应用条件 问题 你想从一个已存在的模型中的实体派生一个新的实体, ...
- Entity Framework Code First添加修改及删除外键关联实体
1.添加外键关联实体 1>.添加新的Province及City实体 using (var ctx = new PortalContext()) { var city1 = new City { ...
- Hibernate5.2之一对一外键关联(五)
Hibernate5.2之一对一外键关联(五) 一.简介 上篇文章中笔者介绍了Hibernate关联关 ...
- 【Python】django模型models的外键关联使用
Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ...
- hibernate一对一双向外键关联
一对一双向外键关联:双方都持有对方的外键关联关系. 主控方和一对一单向外键关联的情况是一样的,主要的差异表现为,被空方需要添加: @OneToOne(mappedBy="card" ...
随机推荐
- javascript属性标签
- ssh整合需要那些jar
struts2 commons-logging-1.0.4.jar -------主要用于日志处理 freemarker-2.3.8.jar ------- 模板相关操作需要包 ognl-2.6.1 ...
- JS传参中文乱码
在传参的时候给中文参数加上两个encodeURI即可,类似这样: encodeURI(encodeURI(balanceUnit)) 写法二 escape(encodeURI(tmplItem.hyz ...
- linux错误码
1.通过代码输出错误码以及其代表的含义 具体可以参考errno和os模块 errno.errorcode os.strerror(n) # -*- coding:utf8 -*- import os ...
- js的倒计时在ie下显示NAN的最佳解决办法
写了一个倒计时,原代码如下: var times = new Date(); var timesout = new Date("2016-6-7"); var timesg = t ...
- backup3
private void changLayoutTemp2(IActiveView activeView, IPageLayout pageLayout, IPageLayout pTempPageL ...
- Jquery day02
jquery day01回顾 语法: $("选择器") , $(dom对象) , $("<div>") 选择器: 基本:#id.ele ...
- O2O迈进智能时代 百度构建“服务生态”
经历过山车式资本市场后,O2O领域正努力摆脱“低门槛”,或将迎来技术创新之争.在刚刚落幕的百度世界大会上,百度副总裁.百度糯米总经理曾良宣布:将以百度糯米.手机百度和百度地图为核心构建百度服务生态.在 ...
- Centos下安装Redis
转自:http://nnzhp.cn/article/9/ 遇到问题,安装后并启动,redis-cli报错:Could not connect to Redis at 127.0.0.1:6379: ...
- xml ---DOM操作
package day03.xml; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; ...