c 创建mysql实体模型_.net core3.1使用EF连接SQLserver与mysql数据库(代码优先创建数据库、数据库优先创建实体模型)...

一.代码优先 创建数据库(SQLServer2012)

1.创建core3.1的项目

项目结构如下

0bf6599c86dae1b3d220ec4a322e2a73.png

如图,我这里创建了一个core的类库用来保存数据库相关的实体

注意:使用的类库环境必须与core项目的环境一致

2.添加所需NUGet包

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Tools

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Design

231ae316f83fbb9e06d393122167b984.png

3.创建一些实体

添加实体注解需要引用命名空间:

using System.ComponentModel.DataAnnotations;

3.1用户类

public class Customers

{

public int ID { get; set; }

[StringLength(50)]

public string Name { get; set; }

[StringLength(2)]

public string Sex { get; set; }

[StringLength(11)]

public string Phone { get; set; }

[StringLength(200)]

public string Address { get; set; }

}

1

2

3

4

5

6

7

8

9

10

11

12

3.2商品类

public class Product

{

public int ID { get; set; }

[StringLength(20)]

public string Name { get; set; }

public decimal Price { get; set; }

public string Desc { get; set; }

///

/// 导航属性 一件商品对应一个分类

///

public ProductType ProductType { get; set; }

}

1

2

3

4

5

6

7

8

9

10

11

12

3.3商品类型类

public class ProductType

{

public int ID { get; set; }

[StringLength(20)]

public string TypeName { get; set; }

///

/// 导航属性 一对多,一个类型可对多个商品

///

public ICollection Products { get; set; }

}

1

2

3

4

5

6

7

8

9

10

3.4上下文类

///

/// 上下文类

/// 继承系统上下文

///

public class CoreMVCContext:DbContext

{

public CoreMVCContext()

{

}

public CoreMVCContext(DbContextOptions option) : base(option)

{

}

public DbSet ProductTypes { set; get; }

public DbSet Product { set; get; }

public DbSet Customers { set; get; }

///

/// 重写父类的方法 用于连接数据库

///

///

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

if (!optionsBuilder.IsConfigured)

{

//连接字符串

optionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=CoreMVC;Integrated Security=True");

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

4.准备代码的迁移与数据库的更新

4.1代码迁移:Add-Migration

4.2数据库更新:update-database

f85420ee2ef5ceab4e22cf887f3f0dc3.png

二、数据库优先 创建实体类(SQLServer2012)

1.获得数据库的连接字符串

80d23da7451231c3d6dec56ab0e6e86e.png

在这里右键添加连接,选择需要连接的服务器和数据库,本地为‘.’,,测试连接,连接成功了去“高级”里面将连接字符串复制出来,等会要用

2.安装所需依赖,同上

3.连接数据库

Scaffold-DbContext "Data Source=.;Initial Catalog=UU;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context UUDBContext

9cc037302b0ad57d7f607f81a16659bd.png

若启动项目不对

5565c647616201478a1571802ce208cb.png

4.成功

有警告,注释掉那一行即可

17e364bc2d90113aaa856a6262e67a9a.png

三、数据库优先 创建实体类(MySQL 5.7)

本以为连接mysql会麻烦不少,记得年初连接mysql时还不支持ef6.x的框架,要连接还需要使用低配的依赖包才可以,但是这次却直接可以了,感觉有点神奇

1.获得连接字符串

同上,如果是知道连接的可以跳过

2.安装依赖包

因为这是mysql的,使用依赖包和上面的有所不同

Microsoft.EntityFrameworkCore.Tools

Microsoft.VisualStudio.Web.CodeGeneration.Design

MySql.Data.EntityFrameworkCore

Pomelo.EntityFrameworkCore.MySql

ba64acce6c4db43de87773c0cbbfd1e7.png

3.连接数据库并迁移

NuGet包控制台:

Scaffold-DbContext "server=数据库服务器;uid=数据库用户名;pwd=数据库密码;database=数据库名;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force

.Net Core CLi:

dotnet ef dbcontext scaffold "server=数据库服务器;uid=数据库用户名;pwd=数据库密码;database=数据库名;" Pomelo.EntityFrameworkCore.MySql -o Models -f

fae2529cb92626e6e5a46c8559d23ab2.png

MySQL的代码优先与上差不多

四、补充(代码参数说明)

代码参数说明:

-OutputDir (-o) *** 实体文件所存放的文件目录

-ContextDir *** DbContext文件存放的目录

-Context *** DbContext文件名

-Schemas *** 需要生成实体数据的数据表所在的模式

-Tables(-t) *** 需要生成实体数据的数据表的集合

-DataAnnotations

-UseDatabaseNames 直接使用数据库中的表名和列名(某些版本不支持)

-Force (-f) 强制执行,重写已经存在的实体文件

五、更新

如果出现如下错误:

CS1705 C# 标识为“ShopMode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”的程序集“ShopMode”所使用的“Microsoft.EntityFrameworkCore, Version=3.1.7.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”版本高于所引用的标识为“Microsoft.EntityFrameworkCore, Version=3.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”的程序集“Microsoft.EntityFrameworkCore”

1

则将Microsoft.EntityFrameworkCore.Tools的版本号进行降级,降到3.1.0即可

错误原因是该依赖包的版本要比项目文件的版本高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值