一、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. NUnit -- Test discovery or execution might not work for this project

    [7/31/2019 2:06:58.100 PM Warning] No test matches the given testcase filter `FullyQualifiedName=Sil ...

  2. LC 802. Find Eventual Safe States

    In a directed graph, we start at some node and every turn, walk along a directed edge of the graph.  ...

  3. 机器学习 - 算法 - 集成算法 - 分类 ( Bagging , Boosting , Stacking) 原理概述

    Ensemble learning - 集成算法 ▒ 目的 让机器学习的效果更好, 量变引起质变 继承算法是竞赛与论文的神器, 注重结果的时候较为适用 集成算法 - 分类 ▒ Bagging - bo ...

  4. 使用redis防止重复提交

    使用redis防止重复提交   其实主要思路是他的https://blog.csdn.net/u013378306/article/details/52944780 主要目前我的情况是,前后端分离的, ...

  5. java程序引用别的jar包打包方法

    参考文章:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 目前亲测:eclipse打包: 1.不需要手动写mainfest.inf 先利用ecl ...

  6. generator自动生成数据表

    1.先写好自己要创建的字段等: 然后将将上面的在plsql中运行,创建数据表.

  7. jmeter之吞吐量控制器

    比如说有一种场景是,10个并发里,有2个事操作业务A,有8个是操作业务B,要模拟这种业务场景,则可以通过吞吐量控制器来模拟 目录 1.用法 2.举例 1.用法 第一种:设置比例控制 选择percent ...

  8. centos7.6安装docker

    先运行 yum update 然后卸载旧版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ do ...

  9. Elasticsearch常见错误与配置简介

    一.常见错误 1.1 root用户启动elasticsearch报错 Elasticsearch为了安全考虑,不让使用root启动,解决方法新建一个用户,用此用户进行相关的操作.如果你用root启动, ...

  10. 线程池小结(JDK8)

    1.线程池的好处 降低资源消耗(重复利用已创建的线程减少创建和销毁线程的开销) 提高响应速度(无须创建线程) 提高线程的可管理性 2.相关类图 JDK5以后将工作单元和执行机制分离开来,工作单元包括R ...