Code First 约定


Code First 使开发者可以用一个C#或者VB的类来描述一个model,model的基本特性根据约定进行检测。约定是一组可以根据C#或者VB的类定义生产概念模型的规则。这些约定位于System.Data.Entity.ModelConfiguration.Conventions命名空间下。

开发者也可以用data annotations 或the fluent API来配置生产自己的模型。配置优先权按照 fluent API,data annotations ,conventions的顺序。

Code First  的详细信息在API Documentation中可以找到。本文可以让开发者略览Code First约定。


   Type Discovery

    使用代码首先发展时,开发者一般先写作定义“概念模型”的.NET Framework类。要对定义好的.NET Framework类进行改动,你需要让DbContext知道你想在模型中添加什么类型。想实现这步,你需要定义一个继承DbContext的context class,并公开一个你想要包含在模型中的DbSet属性。Code First 将包含这些类型,也可以驱动任何引用类型,即便这些引用类型在完全不同的assembly中。

如果你的类型中存在继承关系,你只需为基类定义DbSet属性,继承类将自动包含这些属性。

在下面的例子中,  SchoolEntities class 只有一个DbSet属性(Departments)。 Code First 用这个属性来发现和检测引用类型。

 1 public class SchoolEntities : DbContext
 2 {
 3     public DbSet<Department> Departments { get; set; }
 4 }
 5
 6 public class Department
 7 {
 8     // Primary key
 9     public int DepartmentID { get; set; }
10     public string Name { get; set; }
11
12     // Navigation property
13     public virtual ICollection<Course> Courses { get; set; }
14 }
15
16 public class Course
17 {
18     // Primary key
19     public int CourseID { get; set; }
20
21     public string Title { get; set; }
22     public int Credits { get; set; }
23
24     // Foreign key
25     public int DepartmentID { get; set; }
26
27     // Navigation properties
28     public virtual Department Department { get; set; }
29 }
30
31 public partial class OnlineCourse : Course
32 {
33     public string URL { get; set; }
34 }
35
36 public partial class OnsiteCourse : Course
37 {
38     public string Location { get; set; }
39     public string Days { get; set; }
40     public System.DateTime Time { get; set; }
41 }

如果你想从模型中排除类型,使用NotMapped属性或DbModelBuilder.Ignore fluent API。

    modelBuilder.Ignore<Department>();


     Primary Key Convention 

     Code First 根据属性名是否为"ID"或者以"ID"结尾来推断是否为主键。如果主键属性的类型是numeric或GUID,该列将被配置为一个标识列。

1 public class Department
2 {
3     // Primary key
4     public int DepartmentID { get; set; }
5
6     . . .
7
8 }


     Relationship Convention

未完。。。

转载于:https://www.cnblogs.com/pShan/archive/2013/05/08/3066030.html

Code First 约定相关推荐

  1. Entity Framework 6新特性:全局性地自定义Code First约定

    2012年12月11日,Entity Framework已经发布了Entity Framework 6 Alpha2,因项目需要,目前已使用了其中的两个特性,今天就来介绍一下第一个特性:全局性地自定义 ...

  2. 【EF】Entity Framework 6新特性:全局性地自定义Code First约定

    应用场景 场景一:EF Code First默认使用类名作为表名,如果我们需要给表名加个前缀,例如将类名Category映射到表Shop_Category.将Product映射到Shop_Produc ...

  3. Entity Framework 5.0 Code First全面学习

    Code First 约定 借助 CodeFirst,可通过使用 C# 或Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Firs ...

  4. Code First :使用Entity. Framework编程(7) ----转发 收藏

    第7章 高级概念 The Code First modeling functionality that you have seen so far should be enough to get you ...

  5. 了解EF CodeFirst的Migrator功能与Migrator.Net对比

    在上一篇[数据库迁移利器:Migrator.Net]中,很多朋友提到了EF的CodeFirst也有数据库的迁移功能,说来真惭愧,玩了那么多年,至今还未去了解EF,今天来了解下CodeFirst然后与M ...

  6. Vue封装一个简单轻量的上传文件组件

    一.之前遇到的一些问题 项目中多出有上传文件的需求,使用现有的UI框架实现的过程中,不知道什么原因,总会有一些莫名其妙的bug.比如用某上传组件,明明注明(:multiple="false& ...

  7. 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先

    基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 转载于:https://github.com/Meowv/Blog 本篇主要使用Entity Framework ...

  8. EntityFramwork(1) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542

    1.创建应用程序 简单起见,我们将构建一个使用 Code First 执行数据访问的基本控制台应用程序. 打开 Visual Studio "文件"->"新建&qu ...

  9. mysql shell eof_shell脚本 exit命令 EOF用法 数组用法

    一.exit命令(shell脚本出错不停止,除非显示exit) 格式:exit n 退出,设置退出码为n.(Cause the shell to exit with a status of n.) 格 ...

  10. dbcontext的使用

    DbContext的使用 EF4.1包括Code First和DbContext API.DbContext API为EF提供更多的工作方式:Code First,Database First和Mod ...

最新文章

  1. 解决使用Dockerfile来build镜像时pip install遇到的BUG
  2. 祝贺!又一批清华大学长聘教授,来了!
  3. python写网站 linux_linux下利用nginx部署python网站
  4. matplotlib安装
  5. Linux常用命令 积累
  6. php之变量覆盖漏洞讲解
  7. centos中bash占用cpu,linux下如何定位CPU占用高的进程的问题点
  8. linux 连接wifi不稳定,rtl8188ce 无线网不稳定终极解决方案 - 哆啦比猫的技术瞎扯 - Arch Linux · ドラえもん · 实时绘制...
  9. 解决Error: Protected multilib versions:
  10. ffmpeg中的sws_scale算法性能测试
  11. HashTable源码简单介绍
  12. Alex 的 Hadoop 菜鸟教程: 第22课 分布式日志收集组件:flume
  13. 爬虫(六十九)简明 jieba 中文分词教程(六十)
  14. 计算机专业网络实训室,计算机专业实训室建设方案.doc
  15. vue汉王签字板_汉王ESP370U驱动下载|汉王签字板ESP370U驱动(附控件接口) - 驱动无忧...
  16. 毕业了,我的四年大学:平凡但不平庸(写给每一位想要认真学习的小伙伴)
  17. 熊猫TV技术与直播技术相关
  18. opencv保存视频文件很大
  19. cdr CorelDRAW Graphics Suite 2021 (v23.1.0)
  20. 吴恩达深度学习工程师系列课程笔记(Deep Learning Specialization - deeplearning.ai)

热门文章

  1. gradle安装及idea导入spring5.0x的源码
  2. 滚轮事件的防冒泡、阻止默认行为
  3. SQL Server中数据库文件的存放方式,文件和文件组
  4. select、poll、epoll的区别
  5. 12. 打印1到最大的n位数(C++版本)
  6. java实现希尔排序(交换法、移位法) 图解+代码推导
  7. pandas学习之透视表
  8. eclipse 大小写快捷键_idea中的一些常用快捷键
  9. js定位div坐标存入mysql_js实现获取div坐标的方法
  10. 实战爬虫:利用python中itchat模块给心爱的人每天发天气预报