如何使用“数据库优先方法”在 Firebird 数据库中实现 Entity Framework Core 3.1.2

Posted

技术标签:

【中文标题】如何使用“数据库优先方法”在 Firebird 数据库中实现 Entity Framework Core 3.1.2【英文标题】:How to implement Entity Framework Core 3.1.2 with Firebird database using 'database first approach' 【发布时间】:2020-06-15 23:12:56 【问题描述】:

我目前正在开发一个 .NET Core 3.1 Web API,它应该与 Firebird 数据库通信(存储/检索数据)。我想使用Microsoft.EntityFrameworkCore 3.1.2 处理该通信。实体框架对我来说是全新的,如果这个问题太简单,请原谅。但我在网上找不到答案。

因为数据库非常大,我想使用 EF Core 自动生成所有我需要的模型。

我尝试在数据包管理器控制台中使用Scaffold-DbContext 命令:

Scaffold-DbContext "user id=USER;password=PASSWORD;database=DATABASE;data source=SOURCE;port number=PORT;character set=UNICODE_FSS;pooling=False;server type=Default" FirebirdSql.EntityFrameworkCore.Firebird -OutputDir Models 

Entity Framework Core 正在生成 Context.cs,但没有生成任何模型。

我必须指定要导入的模型吗?我该怎么做?

【问题讨论】:

考虑在firebird-net-provider Google group上提问。 【参考方案1】:

总结对 firebird-net-provider 组中the question you posted 的响应,Firebird 目前不支持在 EntityFrameworkCore 中搭建模型。对此的改进票是DNET-798。

【讨论】:

【参考方案2】:

您也可以将其用于 MSSQL:Scaffold-DbContext "Server=ServerName;Database=DBName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 模型。

对于 Firebird DB,FirebirdSql.EntityFrameworkCore.Firebird 在版本 7 中不支持 DbContext。您应该为 Firebird 使用版本 8。

【讨论】:

以上是关于如何使用“数据库优先方法”在 Firebird 数据库中实现 Entity Framework Core 3.1.2的主要内容,如果未能解决你的问题,请参考以下文章

使用数据库优先方法时如何更新模型

如何使用 DbModelBuilder 和数据库优先方法来实现软删除

如何使用 c# 在数据库优先方法中拥有审计列?

如何在 Firebird 中使用 For 循环?

在实体框架数据库优先方法中,如何从存储过程返回多个结果集?

如何使用 .NET Provider 在 Firebird 上启用 AUTODDL?