我们新建一个控制台项目,项目中添加两个Model:Author和Blog以及DbContext。 DbContext的添加方式如下:
项目上右键->添加->新建项->ADO.NET Entity Data Model->Empty Code First model
项目代码如下:
1 //默认生成的数据表名为类名+字母s,这里使用TableAttribute来指定数据表名为T_Authors
2 [Table("T_Authors")]
3 public class Author
4 {
5 public int Id { setget}
6 public string Name { setget}
7 /*
8 此处定义了Blog类型的属性,所以要确保Blog类中至少要有一个表示主键的字段,即public int Id { setget}。
否则在生成数据表时会报错:"EntityType 'Blog' has no key defined. Define the key for this EntityType.
9 Blogs: EntityType: EntitySet 'Blogs' is based on type 'Blog' that has no keys defined."
10 */
11 public virtual ICollection<Blog>Blogs { setget}
12 }
13
14 [Table("T_Blogs")]
15 public class Blog
16 {
17 public int Id { setget}
18 public string Title { setget}
19 public DateTime Time { setget}
20 public int AuthorId { setget}
21 public virtual Author Author { setget}
22 }
23
24 public class MyDbContext: DbContext
25 {
26 public MyDbContext()
27 : base("name=MyDbContext")
28 {
29 }
30 //DbContext会根据配置文件中connectionStrings指定的数据库名称来建立数据库
31 //DbContext根据DbSet属性的类型来创建数据表,这里指定了Author类型的属性,所以会生成T_Authors数据表
32 public virtual DbSet<Author>Authors { setget}
33 }
CodeFirst方式会根据配置文件中的配置生成数据库,这里小编使用的是MYSQL数据库,配置文件如下:
1 <!--EF for MYSQL-->
2 <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
3 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
4 <providers>
5 <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
6 </providers>
7 </entityFramework>
8 <connectionStrings>
9 <add name="MyDbContext" connectionString="server=localhostport=3306database=EFuid=rootpassword=root" providerName="System.Data.MySqlClient" />
10 </connectionStrings>
PS:小编使用的是EF6和MYSQL数据库,所以要在项目中添加对Mysql.Data.Entity.EF6以及EntityFrameword 6.0的引用。
到此,我们已经完成生成数据库的工作,接下来在Main方法中写两行代码:
1 using (var db = new ManagerDb())
2 {
3 db.Authors.Add(new Author() { Name = "xfh" })
4 db.SaveChanges()
5 }
选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点
右键单击【数据库】节点,从d出来的快捷菜单中选择【新建数据库】命令。
执行上述 *** 作后,会d出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,
在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。
在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。
切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到【文件组】页,在这里可以添加或删除文件组。
完成以上 *** 作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。
方法/步骤
1
EF的Code First模式不需要我们创建什么数据向导,直接写代码就行了。我们用NET最简单的控制台应用程序来说明。如下图所示
2
下面我们新建两个实体,一个实体是班级对象,一个实体是学生对象,注意这两个对象是一对多的关系,他们的构建如下图所示,注意他们声明上面的属性标识
3
然后我们需要引用两个库,一个就是我们的EntityFramework,另一个就是System.Data.Entity
4
下面就是主要写EF的上下文对象了,如下图所示,需要继承EF的DbContext。注意base里的名字为连接字符串名字,在App.Config中配置即可。为了说明CodeFirst的魅力,这里我填写的数据库,在数据库中并没有
5
下面我们在主函数中新增班级对象,然后执行EF的SaveChanges方法
6
看一下我们的数据库吧,你会发现数据库中是不是多出来了一个我们在配置文件中写的数据库名字,并且也已经将表创建好了
7
通过以上的步骤,你感觉到EF的Code First模式的魅力了没,自动创建数据库以及表。这也是现在应用最多的模式了,好了,这次分享就到这里。有什么问题的话,留言咨询即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)