一、Entity的注解属性(Annotations)
不管是code first还是db first,都需要用到注解属性,至于用System.ComponentModel.DataAnnotations命名空间提供的,还是EntityFramework程序集提供的,现在来做个总结。
(EntityFramework程序集using不进来,不知道什么原因,暂时先总结System.ComponentModel.DataAnnotations命名空间的)
1、System.ComponentModel.DataAnnotations
DataAnnotation 特性由.NET 3.5中引进,给.NET中的类提供了一种添加验证的方式。常用的Annotation有:
Key
Required
MaxLength/MinLength
NotMapped
ComplexType
ConcurrencyCheck
Timestamp
Table
Column
DatabaseGenerated
ForeignKey
InverseProperty

2、EntityFramework
System.ComponentModel.DataAnnotations命名空间中只定义了部分实体验证的特性,在EntityFramework程序集中定义了更多的数据映射特性。

参考:
http://www.cnblogs.com/guomingfeng/archive/2013/06/12/mvc-ef-configuration-migration.html
http://www.cnblogs.com/panchunting/p/entity-framework-data-annotations.html
http://www.cnblogs.com/aehyok/p/3328253.html

二、Code First默认多重关系的一些约定规则
1、一对多关系
关于外键列名默认约定,在《Programming Entity Framework Code First》一书中,给出的3种外键列名的约定方式是:
[Target Type Key Name]
[Target Type Name] + [Target Type Key Name]
[Navigation Property Name] + [Target Type Key Name]
对应的中文翻译为:
[目标类型的键名]
[目标类型名称]+[目标类型键名称]
[引用属性名称]+[目标类型键名称]

举例说明:
比如有两个类Category和Product,要使得Category与Product之间具有一对多关系,Entity Framework Code First可以有3种体现方式:
(1)、在Category类中定义ICollection<Product> Products集合属性,同时在Product类中定义CategoryID引用属性。
(2)、仅在Category类中定义ICollection<Product> Products集合属性。
(3)、仅在Product类中定义Category Category引用属性(定义一个Category类型的字段)。

备注:
Code First在根据定义的类生成数据表时,数据表之间的外键关系及所生成的外键列名有默认的约定。但这种约定同样可以进行修改的,
修改方法就是使用Data Annotations或Fluent API。

2、多对多关系
Code First在根据定义的多对多关系的类生成数据表时,除了生成实体类定义的属性表之外,还会生成一个中间表,用于体现两个实体表之间的多对多的关系。

3、一对一关系
使用Data Annotations或Fluent API设置。
如:
[Key]
[ForeignKey("User")]
public int ProfileID { get; set; }

内容来源:
http://www.cnblogs.com/libingql/p/3353112.html

EntityFramework学习要点记一的更多相关文章

  1. MVC4学习要点记四

    一.使用原生SQL使用EF的一个优点就是自动帮我们生成SQL,这在常规情况下很方便,但有些情况下用EF却不适合.另外还有些特别复杂的语句,利用EF很难生成.所以,EF提供一组方法用来执行原生的SQL. ...

  2. MVC4学习要点记三

    一.数据迁移用来解决code first情况下当增加.删除.改变实体类,或改变DbContext类后,相应地更新数据库结构而不会对现有数据产生影响. 1.启用迁移指令:enable-migration ...

  3. MVC4学习要点记二

    一.分页(PagedList.MVC)1.安装PagedList.MVCPM>install-package PagedList.mvc   2.控制器中使用PagedList   3.csht ...

  4. MVC4学习要点记一

    强类型的辅助方法:这些helper的特征是名称后面加上了 For , 这些叫做强类型的辅助方法. 共用布局页:可以在Views文件夹下面新建一个视图页,命名为_ViewStart.cshtml,将这部 ...

  5. 【C#】第3章学习要点(一)--整体把握

    分类:C#.VS2015 创建日期:2016-06-18 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.使用别人已经设计好的类简化你的代码编写工作量 当让你去 ...

  6. 【C#】1.1 第1章学习要点

    分类:C#.VS2015 创建日期:2016-06-14 教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.配套源程序(VS2015版)的运行截图 VS2015版的配套源 ...

  7. 成为Java高手的25个学习要点

    成为Java高手的25个学习要点 想成为Java大牛吗?不妨来学习这25个要点. 1. 你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该了解UML, ...

  8. entityframework学习笔记--001

    最近想重新好好学习一下entityframework,于是在院子里找到了一篇不错的博客.下面把学习的过程记录下来,方便以后复习. 学习过程参考大神的博客:http://www.cnblogs.com/ ...

  9. Java Web编程技术学习要点及方向

    学习编程技术要点及方向亮点: 传统学习编程技术落后,应跟著潮流,要对业务聚焦处理.要Jar, 不要War:以小为主,以简为宝,集堆而成.去繁取简 Spring Boot,明日之春(future of ...

随机推荐

  1. shapefile 输出的地理处理注意事项

    多年来,ESRI 为存储地理信息开发了三种主要数据格式 - coverage 格式.shapefile 格式及地理数据库格式.其中,所开发的 Shapefile 为存储地理及属性信息提供了一种简单的非 ...

  2. PHP中的src32

    crc32() 函数计算一个字符串的 crc32 多项式. 该函数可用于验证数据的完整性. 语法 crc32(str 参数 描述 string 必需.规定要计算的字符串. 说明 生成 string 参 ...

  3. 4.Java JSON使用

    Java 中 JSON 的使用 分类 编程技术 本章节我们将为大家介绍如何在 Java 语言中使用 JSON. 类库选择 Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库. 下面 ...

  4. angcyo

    https://github.com/angcyo https://github.com/angcyo/UIKit https://github.com/angcyo/RHttpServer http ...

  5. react中使用map时onClick事件失效

    分享一些踩过的坑 react中使用map时onClick事件失效 <span> { count.map( (item,index)=>{ return <span style= ...

  6. python之scrapy的debug、shell、settings、pipelines

    1.debug了解 2.scrapy shell了解 Scrapy shell是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath表达式 使用方法: scrap ...

  7. Java并发包concurrent——ConcurrentHashMap

    转: Java并发包concurrent——ConcurrentHashMap 2018年07月19日 20:43:23 Bill_Xiang_ 阅读数 16390更多 所属专栏: Java Conc ...

  8. python3使用tkinter之Menu坑

    添加菜单之后,下拉菜单的第一行是一条虚线,点击会在窗口的左上角独立显示下拉菜单,如下图所示: 去掉的方法是:创建文件菜单的时候,添加 tearoff=0参数 tearoff 有 0 和 1 两个值,分 ...

  9. docker笔记(2)——docker镜像操作

    操作环境:mac OS 10.14.6 docker版本:10.03.1 终端:iterm2 3.3 时间:2019年8月 docker 镜像,是运行容器的模板,通过pull操作会向指定仓库获取镜像, ...

  10. web安全问题总结

    主要问题 SQL注入:即通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,从而获取不该获取的数据 跨站脚本攻击(也称为XSS):指利用网站漏 ...