c# - 使用 Fluent.NHibernate,如何根据 Select 语句进行插入

标签 c# sql-server fluent-nhibernate iqueryable

我有一段相当复杂的逻辑,它为我生成了一个 IQueryable,我用它来使用 Fluent.NHibernate 从我的数据库返回数据。

但是,我需要能够将此查询的结果存储回数据库(实际上只是主键,但这是一个附带问题)

如何根据 IQueryable 生成插入语句我已经必须像下面生成的示例一样获取 SQL:

INSERT INTO MySavedResults (Id, FirstName, LastName)
SELECT Id, FirstName, LastName FROM Member
WHERE 
FirstName = 'John' and LastName ='Snow' and ...-- more conditions

最佳答案

我不确定是否有一种方法可以在不使用原始 sql 的情况下直接在 NHibernate 中执行此操作。

您当然可以使用您已有的 IQueryable 并从此 IQueryable 生成 nhibernate 实体。然后,您可以获取这些实体并结合使用 IStatelessSession 和批处理来提高大型结果集的性能。

这是一个很好的例子:

Speed up bulk insert operations with NHibernate

我还会查看其他答案以进一步提高速度。

编辑:

另一种可能的方法是使用如下方式将 linq 查询转换为原始 sql:

How can I have NHibernate only generate the SQL without executing it?

获取原始 sql 并在其前面加上您要创建的插入语句,然后使用如下方式执行此 sql:

Executing Sql statements with Fluent NHibernate

关于c# - 使用 Fluent.NHibernate,如何根据 Select 语句进行插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191661/

相关文章:

nhibernate - SQLite/Fluent NHibernate 集成测试工具初始化在大数据 session 后不可重复

postgresql - 使用 Fluent NHibernate 在 PostgreSQL 中自动创建模式

c# - 从后代获取 xml 元素列表

c# - 如何在异常处理程序 - WebAPI 中获取请求 JSON 消息?

c# - 启动与 SQL Server 的连接时异常的 SqlException

sql - 根据相关节点从层次结构中选择行

c# - .NET Core Web API 模型验证

c# - XAML 应用程序工作流是什么样的

使用 CASE、GROUP BY 和 HAVING 的 SQL UPDATE

fluent-nhibernate - 流利的 NHibernate 多对多不保存