0

我有几十个表格定义和文本形式的数据。表定义也可能不时更改。

我想在运行时根据这些定义创建 EF Core 表,并从这些文件中填充它们。

如果可能的话,迁移也很好。

这可能吗?

或者:是否可以从 DatabaseContext 中 SQL“创建表 xyz”?

或者我应该更好地使用普通(Npg)sqlCommands 来创建、插入和更新?

我正在使用 Npgsql 顺便说一句。

4

1 回答 1

0

如果您只想执行自己的 SQL 来创建表,那么使用 NpgsqlCommand (ADO.NET) 或 EF Core 并不重要。EF Core 对执行这种原始 SQL 并没有任何附加价值,因此您最好只使用 NpgsqlCommands。但是,您有责任确保您的 EF Core 代码模型与您的文本定义完全对应。您可以手动确保这一点(通过维护完全对应的 C# 类模型),或者您可以从根据您的定义创建的数据库对模型进行逆向工程)。

但是,迁移是完全不同的事情。如果想法是保留外部表定义甚至改进它们,那么迁移就没有真正意义 - 您的外部定义是您在架构上的唯一真实来源,一切都源自于此。如果您想使用 EF Core 迁移,那么您的 C# 模型必须是您的单一事实来源 - 您对其进行更改并更新数据库。

请注意,从现有数据库更新代码模型存在一个问题- 这将允许您对数据库进行更改(通过您的外部定义?)并更新代码模型,而不是从头开始重新生成它。但是,这还没有实现。

于 2019-02-19T09:42:45.173 回答