我有许多表定义和文本形式的数据。 表的定义也可能会不时更改。
我想在运行时根据这些定义创建EF Core表,并从这些文件中填充它们。
如果可能的话,迁移也将很好。
这可能吗?
或者:是否可以通过DatabaseContext SQL“创建表xyz”?
还是我最好只使用简单的(Npg)sqlCommands创建,插入和更新?
我正在使用Npgsql btw。
答案 0 :(得分:0)
如果您只想执行自己的SQL创建表,那么使用NpgsqlCommand(ADO.NET)或EF Core进行操作并不重要。 EF Core对于执行这种原始SQL确实没有任何附加值,因此最好只使用NpgsqlCommands。但是,您有责任确保EF Core代码模型与您的文本定义完全对应。您可以手动确定(通过维护一个完全对应的C#类模型),也可以从根据您的定义创建的数据库中对模型进行反向工程。
但是,迁移是完全不同的事情。如果要保留外部表定义甚至对其进行扩展,那么迁移就没有任何意义了-您的外部定义是架构上事实的唯一来源,所有内容都源自此。如果您想使用EF Core迁移,那么您的C#模型必须是真实的唯一来源-您对此进行更改并更新数据库。
请注意,an issue open用于从现有数据库更新代码模型-这将允许您对数据库进行更改(通过外部定义?)并更新代码模型,而不是从头开始重新生成代码模型。但是,尚未实现。