c# - 从表中仅选择几列

标签 c# .net nhibernate

我在使用 C#、nhibernate 和链接时遇到了问题。在下面的示例中,我在 BrandTable 中执行了一个 SELECT,但我只需要“Name”和“Id”列。 但它总是对表的所有列进行选择。 使用 EntityFramework,下面的相同代码生成仅包含这两列的选择。

如何在 nhibernate 中执行此操作?

 using (ISession session = MyConnection.GetCurrentSession())
        {
            var brands = from b in session.QueryOver<BrandTable>().List()
                                 orderby b.Name
                                 select new Brand {Id = b.id, Name = b.Name};

            return brands.ToList();
        }

最佳答案

您不能将查询理解与 QueryOver 一起使用,因为它不是 Linq 提供程序。在您的示例中,您实际上选择了所有记录,然后使用 LINQ to Objects。将 NHibernate.Linq 命名空间添加到您的文件并将查询重写为

from b in session.Query<BrandTable>()
orderby b.Name
select new Brand {Id = b.id, Name = b.Name};

关于c# - 从表中仅选择几列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776126/

相关文章:

c# - 容器不处理 transient 组件

c# - 在 C# 中创建一个可以采用 double 、十进制和 float 而不重复代码的方法

c# - 是否可以在 .NET 中逐行分析?

c# - 如何比较两个波斯枣以找出哪个更大?

c# - 获取事件的控件名称

c# - 不支持异常 : LINQ to Entities does not recognize the method

c# - NHibernate Query<> 与 QueryOver<> 之间有什么区别?

c# - char 160 在我的源代码中意味着什么?

.net - 德尔福和.NET。使用 Visual Studio

performance - NHibernate HQL vs CriteriaAPI vs QueryOver vs Linq。表现