net-EF codefirst 怎么在创建数据库时增加初始数据

net-EF codefirst 怎么在创建数据库时增加初始数据,第1张

1 使用CodeFirst方式创建数据库
我们新建一个控制台项目,项目中添加两个Model:Author和Blog以及DbContext。 DbContext的添加方式如下:
项目上右键->添加->新建项->ADONET 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 { set; get; }
6 public string Name { set; get; }
7 /
8 此处定义了Blog类型的属性,所以要确保Blog类中至少要有一个表示主键的字段,即public int Id { set; get; }。
否则在生成数据表时会报错:"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 { set; get; }
12 }
13
14 [Table("T_Blogs")]
15 public class Blog
16 {
17 public int Id { set; get; }
18 public string Title { set; get; }
19 public DateTime Time { set; get; }
20 public int AuthorId { set; get; }
21 public virtual Author Author { set; get; }
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 { set; get; }
33 }
CodeFirst方式会根据配置文件中的配置生成数据库,这里小编使用的是MYSQL数据库,配置文件如下:
1 <!--EF for MYSQL-->
2<entityFramework codeConfigurationType="MySqlDataEntityMySqlEFConfiguration, MySqlDataEntityEF6">
3 <defaultConnectionFactory type="SystemDataEntityInfrastructureSqlConnectionFactory, EntityFramework" />
4 <providers>
5 <provider invariantName="MySqlDataMySqlClient" type="MySqlDataMySqlClientMySqlProviderServices, MySqlDataEntityEF6" />
6 </providers>
7 </entityFramework>
8 <connectionStrings>
9 <add name="MyDbContext" connectionString="server=localhost;port=3306;database=EF;uid=root;password=root" providerName="SystemDataMySqlClient" />
10 </connectionStrings>
PS:小编使用的是EF6和MYSQL数据库,所以要在项目中添加对MysqlDataEntityEF6以及EntityFrameword 60的引用。
到此,我们已经完成生成数据库的工作,接下来在Main方法中写两行代码:
1 using (var db = new ManagerDb())
2 {
3 dbAuthorsAdd(new Author() { Name = "xfh" });
4 dbSaveChanges();
5 }

多表连接查询按要查的结果而定 第一个,就是普通的连接查询,等同于 select C字段一 , count(A主键) from Table A inner join Table B on AB的主键 = B主键 inner join Table C on BC的主键 = C主键 group C字段一 或 select C字段一 , 。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10575208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存