Code First 约定
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 约定相关推荐
- Entity Framework 6新特性:全局性地自定义Code First约定
2012年12月11日,Entity Framework已经发布了Entity Framework 6 Alpha2,因项目需要,目前已使用了其中的两个特性,今天就来介绍一下第一个特性:全局性地自定义 ...
- 【EF】Entity Framework 6新特性:全局性地自定义Code First约定
应用场景 场景一:EF Code First默认使用类名作为表名,如果我们需要给表名加个前缀,例如将类名Category映射到表Shop_Category.将Product映射到Shop_Produc ...
- Entity Framework 5.0 Code First全面学习
Code First 约定 借助 CodeFirst,可通过使用 C# 或Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Firs ...
- Code First :使用Entity. Framework编程(7) ----转发 收藏
第7章 高级概念 The Code First modeling functionality that you have seen so far should be enough to get you ...
- 了解EF CodeFirst的Migrator功能与Migrator.Net对比
在上一篇[数据库迁移利器:Migrator.Net]中,很多朋友提到了EF的CodeFirst也有数据库的迁移功能,说来真惭愧,玩了那么多年,至今还未去了解EF,今天来了解下CodeFirst然后与M ...
- Vue封装一个简单轻量的上传文件组件
一.之前遇到的一些问题 项目中多出有上传文件的需求,使用现有的UI框架实现的过程中,不知道什么原因,总会有一些莫名其妙的bug.比如用某上传组件,明明注明(:multiple="false& ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先
基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 转载于:https://github.com/Meowv/Blog 本篇主要使用Entity Framework ...
- EntityFramwork(1) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542
1.创建应用程序 简单起见,我们将构建一个使用 Code First 执行数据访问的基本控制台应用程序. 打开 Visual Studio "文件"->"新建&qu ...
- mysql shell eof_shell脚本 exit命令 EOF用法 数组用法
一.exit命令(shell脚本出错不停止,除非显示exit) 格式:exit n 退出,设置退出码为n.(Cause the shell to exit with a status of n.) 格 ...
- dbcontext的使用
DbContext的使用 EF4.1包括Code First和DbContext API.DbContext API为EF提供更多的工作方式:Code First,Database First和Mod ...
最新文章
- 解决使用Dockerfile来build镜像时pip install遇到的BUG
- 祝贺!又一批清华大学长聘教授,来了!
- python写网站 linux_linux下利用nginx部署python网站
- matplotlib安装
- Linux常用命令 积累
- php之变量覆盖漏洞讲解
- centos中bash占用cpu,linux下如何定位CPU占用高的进程的问题点
- linux 连接wifi不稳定,rtl8188ce 无线网不稳定终极解决方案 - 哆啦比猫的技术瞎扯 - Arch Linux · ドラえもん · 实时绘制...
- 解决Error: Protected multilib versions:
- ffmpeg中的sws_scale算法性能测试
- HashTable源码简单介绍
- Alex 的 Hadoop 菜鸟教程: 第22课 分布式日志收集组件:flume
- 爬虫(六十九)简明 jieba 中文分词教程(六十)
- 计算机专业网络实训室,计算机专业实训室建设方案.doc
- vue汉王签字板_汉王ESP370U驱动下载|汉王签字板ESP370U驱动(附控件接口) - 驱动无忧...
- 毕业了,我的四年大学:平凡但不平庸(写给每一位想要认真学习的小伙伴)
- 熊猫TV技术与直播技术相关
- opencv保存视频文件很大
- cdr CorelDRAW Graphics Suite 2021 (v23.1.0)
- 吴恩达深度学习工程师系列课程笔记(Deep Learning Specialization - deeplearning.ai)
热门文章
- gradle安装及idea导入spring5.0x的源码
- 滚轮事件的防冒泡、阻止默认行为
- SQL Server中数据库文件的存放方式,文件和文件组
- select、poll、epoll的区别
- 12. 打印1到最大的n位数(C++版本)
- java实现希尔排序(交换法、移位法) 图解+代码推导
- pandas学习之透视表
- eclipse 大小写快捷键_idea中的一些常用快捷键
- js定位div坐标存入mysql_js实现获取div坐标的方法
- 实战爬虫:利用python中itchat模块给心爱的人每天发天气预报