我正在寻找一种方法来做多行插入与C#
可以是通用的足够,使相同的程序可以适用于不仅仅是SQL Server
。
现在,我们有一个应用程序,可以使用SQLite
、PostgreSQL
和SQL
作为后端来存储数据,还可以将Oracle添加到混合中。因此,如果有一个过程可以在一个往返过程中插入多行,那就太好了。并且无论使用哪个数据客户端,都要使同一过程工作。(因此,我不使用SQL Server存储过程)。
我正在寻找一种方法来做多行插入与C#
可以是通用的足够,使相同的程序可以适用于不仅仅是SQL Server
。
现在,我们有一个应用程序,可以使用SQLite
、PostgreSQL
和SQL
作为后端来存储数据,还可以将Oracle添加到混合中。因此,如果有一个过程可以在一个往返过程中插入多行,那就太好了。并且无论使用哪个数据客户端,都要使同一过程工作。(因此,我不使用SQL Server存储过程)。
1条答案
按热度按时间mwkjh3gx1#
简短回答:不可能。
说明:
在
.NET
中无法做到这一点,因为每个ORM
(例如Entity Framework
)使用自己的设计和体系结构连接到不同的DBRM。MSSQL
有一个E.F.,SQLite
有一个,MySQL
有一个,MySQL
有微软或第三方的版本,如Pomelo
,但问题是每个EF
都使用不同的架构。此外,
Entity Framework
不是为巨大的批量,对此建议使用ADO.NET
。在这种情况下,您可以使用plain SQL
。考虑到ADO.NET
也可以在某些框架版本中为某些DBRM
而变化。作为建议,您可以使用通用类并执行特定的Map,因此如果选择在某些不适用于T-SQL的DBRM中发生更改,您可以自己进行查询。
根据我的观察,我会选择
ADO.NET
场景,这是一个更多的工作,但相当先进,你不会浪费时间使用Reflection
或一些可能带来大量返工和bug的架构。你可以尝试使用
ADO.NET
,使用动态连接字符串,并尝试使用相同的存储库进行工作。你可以在这里阅读我的答案,以获得一个想法:https://stackoverflow.com/a/69574353/888472
更新:
作为一般的架构,我会使用不同的层(DAL),或者你可以使用REST API(DAS -数据服务),或者你可以为每个DBRM使用一个DAL,这取决于你和你的需要。考虑到Web不是最好的批量工作,因为超时。