EntityFramework学习要点记一
一、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学习要点记一的更多相关文章
- MVC4学习要点记四
一.使用原生SQL使用EF的一个优点就是自动帮我们生成SQL,这在常规情况下很方便,但有些情况下用EF却不适合.另外还有些特别复杂的语句,利用EF很难生成.所以,EF提供一组方法用来执行原生的SQL. ...
- MVC4学习要点记三
一.数据迁移用来解决code first情况下当增加.删除.改变实体类,或改变DbContext类后,相应地更新数据库结构而不会对现有数据产生影响. 1.启用迁移指令:enable-migration ...
- MVC4学习要点记二
一.分页(PagedList.MVC)1.安装PagedList.MVCPM>install-package PagedList.mvc 2.控制器中使用PagedList 3.csht ...
- MVC4学习要点记一
强类型的辅助方法:这些helper的特征是名称后面加上了 For , 这些叫做强类型的辅助方法. 共用布局页:可以在Views文件夹下面新建一个视图页,命名为_ViewStart.cshtml,将这部 ...
- 【C#】第3章学习要点(一)--整体把握
分类:C#.VS2015 创建日期:2016-06-18 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.使用别人已经设计好的类简化你的代码编写工作量 当让你去 ...
- 【C#】1.1 第1章学习要点
分类:C#.VS2015 创建日期:2016-06-14 教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.配套源程序(VS2015版)的运行截图 VS2015版的配套源 ...
- 成为Java高手的25个学习要点
成为Java高手的25个学习要点 想成为Java大牛吗?不妨来学习这25个要点. 1. 你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该了解UML, ...
- entityframework学习笔记--001
最近想重新好好学习一下entityframework,于是在院子里找到了一篇不错的博客.下面把学习的过程记录下来,方便以后复习. 学习过程参考大神的博客:http://www.cnblogs.com/ ...
- Java Web编程技术学习要点及方向
学习编程技术要点及方向亮点: 传统学习编程技术落后,应跟著潮流,要对业务聚焦处理.要Jar, 不要War:以小为主,以简为宝,集堆而成.去繁取简 Spring Boot,明日之春(future of ...
随机推荐
- EBS登录问题小结
1 网络问题 1)ping IP 2)telnet IP 端口 备注:如果端口能访问则直接跳转,如果不能访问则报错如下所示: 2)配置host文件 如果访问的服务器在内网,则需要配置host信息 3) ...
- dev exception 2018
java.lang.IllegalArgumentException: Circular placeholder reference 'trace.enable' in property defini ...
- PHP遍历目录下的文件夹和文件 以及遍历文件下内容
1.遍历目录下的文件夹和文件: public function bianli1($dir) { $files = array(); if($head = opendir($dir)) { while( ...
- POCO C++库笔记 【1.Foundation基础库的结构】
Foundation库是POCO的基础库,提供了一些C++编程中常用的功能的抽象封装,主要由以下这些部分组成: Core -- 这部分除了建立跨平台库的基础头文件外,最有意义的部分是分装了原子计数的 ...
- LC 871. Minimum Number of Refueling Stops 【lock, hard】
A car travels from a starting position to a destination which is target miles east of the starting p ...
- VBA MD5加密算法(转)
) ) Private Function LShift(lValue, iShiftBits) Then LShift = lValue Exit Function Then Then LShift ...
- 扩展:向量空间模型算法(Vector Space Model)
- SSH客户端神器之 MobaXterm
SSH客户端神器之 MobaXterm 由于需要连接远程 Linux 服务器,早期使用过 Putty,SecureCRT,后面主要使用 Xshell. 自从接触了 MobaXterm之后,个人感觉比 ...
- Java集合(4):未获支持的操作及UnsupportedOperationException
执行各种添加和移除的方法在Collection中都是可选操作的,这意味着实现类并不需要为这些方法提供实现.当我们调用这些方法时,将不会执行有意义的行为,而是通常抛出UnsupportedOperati ...
- spring配置注解context:annotation-config和context:component-scan区别
Spring 中在使用注解(Annotation)会涉及到< context:annotation-config> 和 < context:component-scan>配置, ...