EntityFramework 学习 一 创建实体数据模型 Create Entity Data Model
1.用vs2012创建控制台程序
2.设置项目的.net 版本
3.创建Ado.net实体数据模型
3.打开实体数据模型向导Entity Framework有四种模型选择 来自数据库的EF设计器(Database First)、空EF设计器(Model First)、空CodeFirst模型(Code First)、来自数据库的CodeFirst模型(Code First)
4. 选择已存在的数据库连接
5.下一步显示数据库中所有的表、视图和存储过程
备注:
Pluralize or singularize generated object names:如果数据库中表的名称是复数,则变为单数形式。如果SchoolDB 数据库中有Students表,则实体集将是单数的Student,实体的关系如果是一对多、多对多的关系,则关系将是复数形式,例如Student和Course表示多对多的关系,Student实体集中将有复数的属性名Courses表示Course的集合
Include foreign key columns in the model:包含外键属性明确的表示外键。例如,Student与Standard表示一对多的关系,所以一个Student和一个Standard关联,为了表示这一关系,Student实体中包含StandardId导航属性,如果不选该项,Student实体仅包含Standard属性,而不包含StandardId属性
6.Import selected stored procedures and functions into entity model:自动创建函数引入存储过程和函数
7.点击Finish,项目将增加School.edmx文件,双击School.edmx文件,将展现表对应的实体以及关系
8.EDM在配置文件中添加链接字符串
<connectionStrings> <add name="SchoolDBEntities" connectionString="metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=SchoolDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>
实体-表的映射
EDM中的每一个实体都与数据库中的表对应
Context上下文和实体类型
在EDM中,每个实体数据模型都会自动生成一个上下文类、与数据库中表对应的实体类,展开School.edmx,有两个重要文件{EDM Name}.Context.tt and {EDM Name}.tt:
School.Context.tt:使用T4模板文件生成上下文类,该类继承DbContext
School.tt T4模板为数据看中的表生成实体类
public partial class Student { public Student() { this.Courses = new HashSet<Course>(); } public int StudentID { get; set; } public string StudentName { get; set; } public Nullable<int> StandardId { get; set; } public byte[] RowVersion { get; set; } public virtual Standard Standard { get; set; } public virtual StudentAddress StudentAddress { get; set; } public virtual ICollection<Course> Courses { get; set; } }
EDM Designer: 描绘概念模型,它包含实体和关系,它看起来很像数据库表的结构,但是你可以添加、合并和删除列,你甚至可以添加对象到模型上,可以有与数据库表不同的列,然而,在模型上的变化都会影响到存储模型。你可以通过XML文件查看EDM