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

1.Data Annotations方式

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

方法一:

代码:

public class Device
{
[Key, ForeignKey("ClassRoom")]
public Guid ClassRoomId { get; set; } public virtual ClassRoom ClassRoom { get; set; }
public string Remark { get; set; }
}
public class ClassRoom
{
public Guid Id { get; set; }
[ MaxLength()]
public string Number { get; set; }
public virtual Device Device { get; set; }
public string Remark { get; set; }
}

测试结果:

方法二:

代码:

public class Device
{
public Guid Id { get; set; }
public virtual ClassRoom ClassRoom { get; set; }
public string Remark { get; set; }
}
 public class ClassRoom
{
[Key, ForeignKey("Device")]
public Guid DeviceId { get; set; }
[ MaxLength()]
public string Number { get; set; }
public virtual Device Device { get; set; }
public string Remark { get; set; }
}

执行结果:

2.Fluent API方式

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

方法一:

代码:

 public class ClassRoom
{
public Guid ClassRoomId { get; set; }
[ MaxLength()]
public string Number { get; set; }
public virtual Device Device { get; set; }
public string Remark { get; set; }
}
public class Device
{ public Guid DeviceId { get; set; } public virtual ClassRoom ClassRoom { get; set; }
public string Remark { get; set; }
}
modelBuilder.Entity<ClassRoom>().HasRequired(t => t.Device).
WithRequiredPrincipal(t => t.ClassRoom);

结果:

方法二:

代码:

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

modelBuilder.Entity<ClassRoom>().HasRequired(t => t.Device).
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. NX二次开发-UFUN关闭本地文本文档uc4540

    1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_cfi.h> 5 #include <uf_ui.h> 6 7 us ...

  2. NX二次开发-UFUN高亮显示对象UF_DISP_set_highlight

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_disp.h> UF_initializ ...

  3. Java io简单总结

    IO 字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的 字符流在操作时使用了缓冲区,通过缓冲区再操作文件 缓冲:一段特殊的内存.如果一个程序频繁地操作一个资源(如文件或数据库),则性能会 ...

  4. 10、 导出python脚本进行数据驱动的接口测试

    postman自带脚本导出功能,对于代码小白来说,可以不错的学习代码级接口测试 第一步:输入接口地址,点击send 第二步:点击code,导出脚本文件,为python脚本 第三步:安装python3以 ...

  5. Jsoup 学习笔记

    这里写自定义目录标题 Jsoup 学习笔记 解析 HTML 的字符串解析 URL 解析 本地文件解析 解析数据 DOM 解析 使用选择器解析 选择器概述 选择器组合用法 过滤用法 修改数据 HTML ...

  6. HDU 5726 线段树+dp

    题意:给出一个序列,后q次询问,求给定区间gcd及整个序列有多少个序列的gcd和这个值相同 首先线段树维护区间gcd建树,之后预处理出每个gcd有多少个子序列,这时需要dp, dp[i][tmp]表示 ...

  7. HTML_标签

    <!--HTML:1.概念:最基础的网页开发语言Hyper Text Markup Language 超文本标记语言超文本:超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本. ...

  8. 判断APP是否已安装

    NSString *str = [NSString stringWithFormat:@"%@://%@",[dic objectForKey:@"ios_url_sch ...

  9. iOS开发系列-Shell脚本编译SDK

    Library静态库Shell脚本 #!/bin/bash #要build的target名 target_Name="IFlyMSC" #编译模式 Release.Debug bu ...

  10. ECMAScript 6中的Set和Map数据结构

    一.Set 基本用法: Set本身是一个构造函数,用来生成Set数据结构.Set函数可以接受一个数组作为参数用来初始化. const arr = new Set([2,2,3,3,4,4,5,8]); ...