c# - 如何编写 Nhibernate 查询

标签 c# sql linq asp.net-mvc-4 nhibernate

<分区>

我有两个映射到数据库中的类。这些表通过字段“DeptId”彼此具有主键和外键关系。

Employee.cs

 public class Employee: Entity
    {
        public virtual Int32 Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Gender { get; set; }
        public virtual Int32 Age { get; set; }
        public virtual string Designation { get; set; }
        public virtual bool Enabled { get; set; }
        public virtual int CreatedById { get; set; }
        public virtual DateTime CreatedDate { get; set; }
        public virtual int? LastModifiedById { get; set; }
        public virtual DateTime? LastModifiedDate { get; set; }
        public virtual bool IsDeleted { get; set; }
        public virtual Department Department { get; set; }
    }

Department.cs

public class Department
    {
        public virtual int DeptId { get; set; }
        public virtual string DeptName { get; set; }
        public virtual bool Enabled { get; set; }
    }

由于我是 NHibernate 的新手,我无法使用 QueryOver 编写更复杂的 Linq 查询。我已经编写了以下查询,但如何编写更高级的查询。请为此提供示例查询和引用。

var query = Session.QueryOver<Employee>().List(); 

最佳答案

NHibernate 查询的文档非常好且完整。您可以在这里找到的基本知识:

此处记录了 QueryOver API,它是 Criteria 的完整类型版本:

开始观察API文档。很快您就会发现它非常符合逻辑(.Where() 构建 WHERE,.Select() 调整 SELECT...)。稍后,如果有任何问题,SO 充满了 HOW TO

从16.1调整为Employee的例子:

var list = session
        .QueryOver<Employee>()
        .WhereRestrictionOn(c => c.Age).IsBetween(18).And(60)
        .Select(c => c.Name)
        .OrderBy(c => c.Name).Asc
        .List<string>();

一个 JOIN 到 Department(来自 16.4 的调整示例)

var query = session
        .QueryOver<Employee>()
        .JoinQueryOver(e => e.Department)
            .Where(k => k.DeptName == "Director");

关于c# - 如何编写 Nhibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943109/

相关文章:

c# - C++ MFC 与 .NET?

sql - SQL 从每个逗号分隔值中获取正确的值

silverlight - WCF缺少system.linq的Silverlight + Web应用程序

.net - Linq - 更好的 `Enumerable.Except()` 运算符(性能和灵活性)?

linq - 查询数据库中距离邮政编码 n 英里内的记录的最佳方法是什么?

c# - 如何获取 ListView 数据模板项目双击WPF MVVM

c# - 防止 Azure TableEntity 属性在 MVC 4 WebAPI 中被序列化

c# - 服务总线QueueClient.Receive如何工作?

ios - 为什么 Microsoft Azure(或一般的 Swift)无法更新变量以在表查询后返回?

sql - 生成数据库指标的简单查询?