使用的例子为教室(ClassRoom),教室里的多媒体设备(Device),一个教室里有一套多媒体设备,一套多媒体设备只放在一个教室里。

1.Data Annotations方式

需要在任意一方的主键属性上加ForeignKey,以下是这两种方式的代码以及结果

方法一:

代码:

  1. public class Device
  2. {
  3. [Key, ForeignKey("ClassRoom")]
  4. public Guid ClassRoomId { get; set; }
  5.  
  6. public virtual ClassRoom ClassRoom { get; set; }
  7. public string Remark { get; set; }
  8. }
  1. public class ClassRoom
  2. {
  3. public Guid Id { get; set; }
  4. [ MaxLength()]
  5. public string Number { get; set; }
  6. public virtual Device Device { get; set; }
  7. public string Remark { get; set; }
  8. }

测试结果:

方法二:

代码:

  1. public class Device
  2. {
  3. public Guid Id { get; set; }
  4. public virtual ClassRoom ClassRoom { get; set; }
  5. public string Remark { get; set; }
  6. }
  1. public class ClassRoom
  2. {
  3. [Key, ForeignKey("Device")]
  4. public Guid DeviceId { get; set; }
  5. [ MaxLength()]
  6. public string Number { get; set; }
  7. public virtual Device Device { get; set; }
  8. public string Remark { get; set; }
  9. }

执行结果:

2.Fluent API方式

主要使用WithRequiredPrincipal以及WithRequiredDependent方法,前者属性会被另外的实体引用,后者将引用另外的实体。

方法一:

代码:

  1. public class ClassRoom
  2. {
  3. public Guid ClassRoomId { get; set; }
  4. [ MaxLength()]
  5. public string Number { get; set; }
  6. public virtual Device Device { get; set; }
  7. public string Remark { get; set; }
  8. }
  1. public class Device
  2. {
  3.  
  4. public Guid DeviceId { get; set; }
  5.  
  6. public virtual ClassRoom ClassRoom { get; set; }
  7. public string Remark { get; set; }
  8. }
  1. modelBuilder.Entity<ClassRoom>().HasRequired(t => t.Device).
  2. WithRequiredPrincipal(t => t.ClassRoom);

结果:

方法二:

代码:

两个类都是相同的,这里就不做展示了

  1. modelBuilder.Entity<ClassRoom>().HasRequired(t => t.Device).
  2. WithRequiredDependent(t => t.ClassRoom);

结果:

Entity Framework Code First 模式-建立一对一联系的更多相关文章

  1. Entity Framework Code First 模式-建立多对多联系

    Entity Framework 在建立多对多的联系时,会生成一个中间表,用来表示这个多对多的关系.这和数据库设计时从概念模型到逻辑模型转化时,多对多的关系不能和任何一端的实体合并,需要将关系也转化为 ...

  2. Entity Framework Code First 模式-建立一对多联系

    一.建立一对多联系 使用的例子为Product与Category,一个种类(Product)对应多个商品(Product) 1.外键列名默认约定 在“一”这边的实体增加一个集合属性(public vi ...

  3. Entity Framework Code First关系映射约定

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  4. Entity Framework Code First (三)Data Annotations

    Entity Framework Code First 利用一种被称为约定(Conventions)优于配置(Configuration)的编程模式允许你使用自己的 domain classes 来表 ...

  5. Entity Framework Code First (二)Custom Conventions

    ---------------------------------------------------------------------------------------------------- ...

  6. Entity Framework Code First 映射继承关系

    转载 http://www.th7.cn/Program/net/201301/122153.shtml Code First如何处理类之间的继承关系.Entity Framework Code Fi ...

  7. Entity Framework Code First主外键关系映射约定

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  8. 使用 Entity Framework Code First

    使用 Entity Framework Code First 在家闲着也是闲着,继续写我的[ASP.NET MVC 小牛之路]系列吧.在该系列的上一篇博文中,在显示书本信息列表的时候,我们是在程序代码 ...

  9. Entity Framework Code first(转载)

    一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...

随机推荐

  1. HAOI 2006 受欢迎的牛 (洛谷2341)

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...

  2. NOIp2018集训test-9-7(pm) (联考一day1)

    又被辉神吊打了.今天不仅被辉神李巨吊打,还给基本上给全班垫底了. 看到T3就知道是十进制快速幂,全机房考试的当时应该就我会,结果我tm没找到递推. Orz lyc BM直接水过,Orz wys六个fo ...

  3. NXOpenC#_Training_intro(cn)【转载】

  4. MPU-6000 与 MPU-6050

    VLOGIC 是什么呢?

  5. Java多线程中提到的原子性和可见性、有序性

    1.原子性(Atomicity)   原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,既不被中断操作,要不执行完成,要不就不执行. 如果一个操作时原子性的,那么多线程并发的情况下,就不会出 ...

  6. DRF的请求响应组件

    目录 DRF的请求响应组件 请求模块(request) 概念 request源码简单分析 响应模块(response) 概念 使用方法 response源码简单分析: 解析模块(parse) 概念 使 ...

  7. 码云的使用以及pycharm

    码云的使用 下载Git一路next 在码云上新建仓库 建立码云仓库 ​ 右键 git bash hero 依次输入 git config --global user.name "用户名&qu ...

  8. IK的整个分词处理过程

    首先,介绍一下IK的整个分词处理过程: 1. Lucene的分词基类是Analyzer,所以IK提供了Analyzer的一个实现类IKAnalyzer.首先,我们要实例化一个IKAnalyzer,它有 ...

  9. Error creating bean with name 'unMblTotController': 注入失败

    今天新来的小伙子,进公司做项目,然后自己新建了包,出了以下错误 y.UnsatisfiedDependencyException: Error creating bean with name 'unM ...

  10. ubontu 16 下的 pylon5 安装

    想用wine,然后走了很多弯路.后来发现正确的安装和配置pylon即可.注意32位和64位不可以混淆. If you choose to install in a different director ...