EntityFramework5-0CodeFirst全面学习.doc

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
不 贴图片了,太累。 Code First 约定 借助 CodeFirst,可通过使用 C# 或Visual Basic .NET 类来描述模型。模型的基本形状可通过约定来检测。约定是规则集,用于在使用 Code First 时基于类定义自动配置概念模型。约定是在 System.Data.Entity.ModelConfiguration.Conventions 命名空间中定义的。 可通过使用数据注释或Fluent API 进一步配置模型。优先级是通过 Fluent API 进行配置,然后是通过数据注释,再次是通过约定。 API 文档中提供了 Code First 约定的详细列表。本主题概述 Code First 使用的约定。 类型发现 当使用 CodeFirst 开发时,通常是从编写用来定义概念(域)模型的 .NET类开始。除了定义类之外,还需要让 DbContext 知道模型中要包含哪些类。为此,需要定义一个上下文类,此类派生自 DbContext 并公开需要成为模型一部分的类型的 DbSet 属性。Code First 将包含这些类型,还将包含任何引用类型,即使这些引用类型是在不同的程序集中定义的也是如此。 如果类型存在于继承层次结构中,则为基类定义 DbSet 属性就足够了,如果派生类型位于与基类相同的程序集中,则自动包含这些派生类型。 在下面的示例中,仅对SchoolEntities 类定义一个DbSet 属性 (Departments)。CodeFirst 使用此属性来发现并包含任何引用类型。 publicclass SchoolEntities: DbContext { ? public DbSetDepartments { get; set;} } ? publicclass Department { ? // Primary key ? public int DepartmentID { get;set; } ? public string Name { get; set; } ? ? // Navigationproperty ? public virtual ICollectionCourse Courses { get;set; } } ? publicclass Course { ? // Primary key ? public int CourseID { get; set; } ? ? public string Title { get; set; } ? public int Credits { get; set; } ? ? // Foreign key ? public int DepartmentID { get;set; } ? ? // Navigationproperties ? public virtual DepartmentDepartment { get; set;} } ? publicpartial class OnlineCourse : Course { ? public string URL { get; set; } } ? publicpartial class OnsiteCourse : Course { ? public string Location { get;set; } ? public string Days { get; set; } ? publicSystem.DateTime Time { get; set; } } 如果要从模型排除类型,请使用 NotMapped 特性或DbModelBuilder.Ignore 主键约定 如果类的属性名为“ID”(不区分大小写)或类名的后面跟有“ID”,则 Code First 会推断该属性是主键。如果主键属性的类型为数值或 GUID,则将其配置为标识列。 publicclass Department { ? // Primary key ? public int DepartmentID { get;set; } } ? 实体框架中的导航属性提供了一种在两个实体类型之间导航关系的方法。针对对象参与到其中的每个关系,各对象均可以具有导航属性。使用导航属性,可以 在两个方向上导航和管理关系,返回引用对象(如果多重性为一或者零或一)或集合(如果多重性为多)。Code First 根据针对类型定义的导航属性来推断关系。 除导航属性外,建议还要包括表示依赖对象的类型的外键属性。任何数据类型与主体主键属性相同、遵循以下一种格式的属性都表示关系的外键:“ 导航属性名称主体主键属性”、“主体类名主键属性名称”或“主体主键属性名 称”。如果找到多个匹配项,则优先级符合上面列出的顺序。外键检测不区分大小写。在检测外键

文档评论(0)

xina171127 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档