EF Core根据sql server或MySql数据库表生成实体类命令

25 篇文章 7 订阅
5 篇文章 0 订阅
前言:首先安装好EF Core和数据库对应包
sqlserver数据库安装ef迁移在上一篇文章 .net 6用EF Core基本创建表,迁移到SQL Server数据库
mysql数据库的在: .net 6用EF Core基本创建表,迁移到mysql数据库
一 SQLServer数据库生成实体类命令

用到的NuGet包

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design

前面部分是数据库连接字符串,Microsoft.EntityFrameworkCore.SqlServer是数据库类型,-OutputDir D:Models/DataModels是保存到哪个文件夹

Scaffold-DbContext -Force “Data Source=LAPTOP-RMDBADPQ\\NING;Initial Catalog=myDataBasetest; Persist Security Info=True; User ID=sa; Password=123456;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir D:Models/DataModels
二 MySql数据库生成实体类命令

用到的NuGet包

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Design
Pomelo.EntityFrameworkCore.MySql
 Scaffold-DbContext "server=.;userid=用户名;pwd=密码;port=3306;database=tech5_kj;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir D:Models/DataModels
三 Oracle数据库生成实体类命令

用到的NuGet包

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Design
Oracle.EntityFrameworkCore
caffold-DbContext -Connection "User Id=登录名;Password=密码;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.127.44)(PORT=1521))
                                                 (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));"Oracle.EntityFrameworkCore -Force -Project DBLib -OutputDir ExtModels -Tables tablename
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Entity Framework Core 操作 MySQL 数据库时,可以使用递归公用达式(CTE)来查询树形结构数据。下面是一个简单的示例: 假设我们有一个 `category` 存储了商品分类的树形结构,结构如下: ```csharp public class Category { public int Id { get; set; } public string Name { get; set; } public int? ParentId { get; set; } } public class MyDbContext : DbContext { public DbSet<Category> Categories { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL("connection_string"); } } ``` 其中,`ParentId` 示父分类的 ID,根节点的 `ParentId` 为 NULL。 现在我们需要查询某个分类的所有子分类,包括子分类的子分类,以此类推。可以使用递归公用达式(CTE)来实现递归查询,如下所示: ```csharp using System.Linq; using Microsoft.EntityFrameworkCore; public static class CategoryExtensions { public static IQueryable<Category> GetDescendants(this IQueryable<Category> query, int id) { var rawSql = @" WITH RECURSIVE cte AS ( SELECT id, name, parent_id FROM category WHERE id = {0} UNION ALL SELECT c.id, c.name, c.parent_id FROM category c JOIN cte ON c.parent_id = cte.id ) SELECT id, name, parent_id FROM cte;"; return query.FromSqlRaw(rawSql, id); } } ``` 上述代码定义了一个静态扩展方法 `GetDescendants`,用于查询指定分类 ID 的所有子分类。在方法中,我们使用了递归公用达式(CTE)查询树形结构数据。具体来说,我们首先定义了一个 CTE 名为 `cte`,以参数 `id` 作为起始分类的 ID。然后使用 UNION ALL 将递归查询的结果与分类连接,直到没有更多子分类为止。最后,输出所有子分类的 ID、名称和父分类的 ID。 可以通过以下代码调用 `GetDescendants` 方法,并指定起始分类的 ID: ```csharp using (var context = new MyDbContext()) { var descendants = context.Categories.GetDescendants(1); foreach (var descendant in descendants) { Console.WriteLine($"{descendant.Id} - {descendant.Name} - {descendant.ParentId}"); } } ``` 上述代码将输出所有子分类的 ID、名称和父分类的 ID。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值