C# 在C中为动态生成的sql抽象数据库#

C# 在C中为动态生成的sql抽象数据库#,c#,sql,orm,C#,Sql,Orm,我正在动态地将数据导入数据库,在数据库中动态创建新表并存储元数据,以便以后可以通过动态构造的SQL访问这些表。我的问题是,对于C#,是否有一个库我可以使用它来抽象SQL本身的一些细节?我遇到的情况是序列(尽管还有其他序列)。在Oracle中,访问序列如下所示 select foo.nextVal from dual; 在博士后 select currval('foo_id_seq'); 对于我的项目,我不知道最终的数据库是什么,我不喜欢在整个项目中运行来修复由于糟糕的SQL导致的一系列错误

我正在动态地将数据导入数据库,在数据库中动态创建新表并存储元数据,以便以后可以通过动态构造的SQL访问这些表。我的问题是,对于C#,是否有一个库我可以使用它来抽象SQL本身的一些细节?我遇到的情况是序列(尽管还有其他序列)。在Oracle中,访问序列如下所示

select foo.nextVal from dual;
在博士后

select currval('foo_id_seq');
对于我的项目,我不知道最终的数据库是什么,我不喜欢在整个项目中运行来修复由于糟糕的SQL导致的一系列错误

我看了NHibernate,它看起来像这样的工具(Linq到SQL)需要一个现有的对象模型。我没有对象模型,因为我所有的数据都是动态提供的,我不知道列数、数据类型等


对此问题的任何建议都值得赞赏。

如果您试图存储的数据具有动态结构,那么关系数据库听起来可能不是最佳选择。它的优势依赖于静态结构和良好定义的数据。使用面向文档的存储(如为动态模式设计的存储)可能会更好。如果您使用MongoDB之类的工具,我认为您关于为动态更改模式抽象查询生成的问题就不存在了


也就是说,一些关系数据库(如SQLServer)对XML数据类型有很好的支持,允许您在静态模式中指定任意结构。SQL Server还允许您直接查询XML数据类型,这意味着您可以在服务器端进行查询,而无需将XML传输回客户端、反序列化、,等等。为了确定这是否能满足您的需要,您必须使用表示生产负载的数据进行测试。

动态创建的表听起来像是坏消息。真的没有其他选择吗?基本上我们的客户上传文件。我们不知道文件的数量、数据类型、它们之间的关系、行的数量、列的数量,或者任何东西。我们使用动态构造已经有一段时间了,并取得了很大的成功。使用XML列作为动态生成的数据。我不想采用这种方法,因为我可以非常快速地动态构造SQL和修改数据。反序列化和搜索XML数据非常耗时。