从代码中查询两个表

时间:2011-06-29 15:37:58

标签: c# hibernate nhibernate

我有两张桌子。

第一个表:员工

IdEmployee
Name
LastName

第二个表: CommentsEmployee

IdComment
IdEmployee
Note

在两个表中与IdEmployee进行协商,从C#获取Name,IdComment和Note 表是SQL类型 正在尝试

DetachedCriteria criteria1 = DetachedCriteria.For<Employee>()
                                .Add(Restrictions.Eq("IdEmployee", 2))
                                .SetFetchMode("Name", FetchMode.Eager);

                DetachedCriteria criteria2 = DetachedCriteria.For<CommentsEmployee>()
                                .Add(Restrictions.Eq("IdEmployee", 2))
                                .SetFetchMode("IdComment", FetchMode.Eager)
                                .SetFetchMode("Note", FetchMode.Eager);

                var result = session.CreateMultiCriteria()
                    .Add(criteria1)
                    .Add(criteria2)
                    .List();

/////////////////////////////////////////////// //////////////////////////////////////// 否则

var result = session
                        .CreateCriteria<Employee>()
                        .CreateCriteria("CommentsEmployee")
                        .Add(Restrictions.Eq("IdEmployee", f))
                        .List();

任何人都可以帮助我

2 个答案:

答案 0 :(得分:2)

我认为你正在寻找一个简单的连接声明?

SELECT * FROM Employee JOIN CommentsEmployee ON Employee.IdEmployee = CommentsEmployee.IdEmployee;

这是通用SQL,我希望它对你有用,但至少它应该传达这个概念。

答案 1 :(得分:0)

我想你应该看看包包。将评论作为一个包添加到员工,您只需要1个get / load语句。

员工类:

IdEmployee
Name
LastName
IList <CommentsEmployee> Comments

行李的xml:

<bag name="Comments" inverse="false" lazy="true" cascade="save-update" generic="true">
    <key column="EmployeeId"/>
    <one-to-many class="EmployeeComments">
</bag>