EF Code First学习笔记 初识Code First
来源:互联网 发布:windows运行程序闪退 编辑:程序博客网 时间:2024/05/21 07:36
Code First是Entity Framework提供的一种新的编程模型。通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库。
下面通过一个简单的示例来了解。
建立一个控制台项目。通过Nuget来获取Entity Framework。
增加两个模型类:
public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; set; } public string Description { get; set; } public byte[] Photo { get; set; } public List<Lodging> Lodgings { get; set; } } public class Lodging { public int LodgingId { get; set; } public string Name { get; set; } public string Owner { get; set; } public bool IsResort { get; set; } public Destination Destination { get; set; } }
再新增Context类:
public class BreakAwayContext : DbContext { public DbSet<Destination> Destinations { get; set; } public DbSet<Lodging> Lodgings { get; set; } }
在Main方法中加入下列代码:
static void Main(string[] args) { var d = DateTime.Now.Date.ToString("yyyyMM"); var destination = new Destination { Country = "Indonesia", Description = "EcoTourism at its best in exquisite Bali", Name = "Bali" }; using (var context = new BreakAwayContext()) { context.Destinations.Add(destination); context.SaveChanges(); } Console.WriteLine("OK"); }
执行成功后打开数据库,默认为.\SQLEXPRESS。
我们可以看到,新增了一个名为BreakAway.BreakAwayContext的数据库。
[Destinations]表里面也插入了我们刚增加的记录:
很COOL吧,Code First就是这么神奇。这里我们代码里面什么也没设置,都是Code First默认生成的。通过生成的数据库库我们来了解一下这些默认设置。
数据库名:当没有显示设置数据连接的时候,默认的数据库是:.\SQLEXPRESS。如果本地没有SQLEXPRESS,EF会尝试LocalDb ((localdb)\v11.0) .\SQLEXPRESS
这个数据库包含在VS2012中。数据库的名称一般是DbContext的“命名空间.类名”,本例中是BreakAway.BreakAwayContext
表名:表名默认为模型类名的复数形式,并且每个表都使用dbo构架创建。这里生成的就是dbo.Lodgings.
主键:Code First会默认将以类似Id结尾来命名的属性当作主键,如ID,Id,本例中的DestinationId都自动设置为主键。如果该属性是int类型,Code First会在数据库中默认将该列设置为自增长。
数据类型:在SQL Server中,字符串默认映射成nvarchar(max),byte[]映射成varbinary(max),bool映射成bit,decimal映射成decimal(18, 2),float映射成float。同时因为bool,decimal,float等是值类型,不能为给他们分配Null值。所生成的数据库会要求对应的列非空。如Lodgings表中的IsResort
外键:Code First检测到模型间有一对多的关系,会自动在相应表中生成外键。在这时,Code First检测到Destination类中有一个List<Lodging> Lodgings属性,而在Lodging类中有一个Destination Destination属性,说明Destination与Lodging是一对多的关系,因而在Lodgings表中生成了外键Destination_DestinationId保存对应的DestinationId。外键的命名默认是导航属性名(这里是Destination)_对应主表的主键(这里是DestinationId)。
- EF Code First学习笔记 初识Code First
- EF Code First学习笔记 初识Code First
- EF Code First学习笔记 初识Code First
- EF Code First学习笔记 初识Code First C
- EF Code First学习笔记 初识Code First
- EF Code First学习笔记:数据库创建
- EF Code First 学习笔记:约定配置
- EF Code First 学习笔记:约定配置
- EF Code First 学习笔记:关系
- EF Code First 学习笔记:关系
- EF Code First 学习笔记:约定配置
- EF Code First 学习笔记:关系
- EF Code First 学习笔记:表映射
- mvc EF code first 学习
- ef-->code first-->Migrations
- ef code first例子
- EF Code first
- EF(code First)
- spring+mybatis+oracle ORA-00923: 未找到预期 FROM 关键字
- 图像识别和卷积神经网络架构原理
- Activity回收时候fragment的异常
- spring+dubbo+zookeeper 微服务架构Dome
- angularJS 购物车Demo
- EF Code First学习笔记 初识Code First
- ios 加急审核
- 《java与模式》-4 java接口
- git 创建分支,切换分支
- android 中显示和隐藏键盘
- SwipeRefreshLayout和RecyclerView实现下拉刷新和上拉加载
- jquery,选择器,选择某个标签如testDiv的所有子标签中的,input标签中,value=1的标签。
- 我与Python的第一天
- EF Code First 学习笔记:约定配置