标签:des style blog http io ar color 使用 sp
因为前段时间一直学习mvc,当然小菜也知道在mvc中都主推使用EF模式来对数据库的访问,在学习mvc的过程中使用EF也遇到了很多问题,在这过程中也迷迷糊糊的一知半解,索性就决定从头开始学习使用EF,当然在EF中有三种模式的,Model First、Database First,当然这次主要是以学习Code First模式为准了。
使用NuGet联机添加了EntityFreamework
该EntityFreamwork的版本是6.0.0.0
因为codeFirst的模式就是代码现行的意思,现在我们就先添加Model文件夹,在下面添加一个People类
public class People { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
这样子在CodeFirst的映射关系中,Id将会生成表的主键,当然遇到属性中如果不出现Id字样的话,编译的时候就会报错了,所以我要在类似的属性上加入标签[key]属性来标记此属性为表的Id主键
public class Test { [Key] public int testName{get;set;} }
Dbcontext是EF中生成访问数据库的重要对象,我们可以通过它来对数据库做增、删、改、查的操作!
在项目中新建一个PeopleContext的类
class PeopleContext : DbContext { public DbSet<People> People { get; set; } }
该PeopleContext最重要的是继承了DbContext
这里有些小的意外,当没有显示设置数据连接的时候,默认连接的数据库时:.\SQLEXPRESS.如果本地没有SQLEXPRESS,EF会尝试LocalDb ((localdb)\v11.0) .\SQLEXPRESS,这个数据库时包含在vs2012中的
此时并没有生成到sqlserver中,在在配置文件中加入connectionStrings的配置节
<connectionStrings> <!--Data Source=.;Initial Catalog=GuestBook;Integrated Security=True--> <add name="PeopleContext" connectionString="Data Source=.;Initial Catalog= testPeople;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
add name中必须和声明的class PeolpleContext一样
这样子就可以在sqlserver中看到生成的数据库了
暂时不知道__MigrationHistory的作用,可能是为了数据迁移而生成的作用
但是在指定了连接字符串后,在sqlserver中生成的数据库表名并不是Peoples而是但是的people,有待考究
在表People中Id变成了主键并且是自动增长的
下面是具体的映射关系
数据库名:当没有显示设置数据,数据库的名称一般是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)。
标签:des style blog http io ar color 使用 sp
原文地址:http://www.cnblogs.com/ilooking/p/4108875.html