我在 ac# 应用程序中使用 Nhibernate。
我正在使用“CreateSQLQuery”从数据库中加载对象列表。问题是我还希望同时填充该对象的属性之一。
例如给定对象:公司员工
我有一个看起来像这样的 SQL 查询:
SELECT DISTINCT {e.*}, {c.*}
FROM Employee e
INNER JOIN Company c on e.company = c.id
(实际的查询要复杂得多,这就是为什么我不能只使用条件 API 或 linq。)
我的代码是这样的:
ISQLQuery sql = session.CreateSQLQuery(sqlText);
sql.AddEntity(e", typeof(Employee));
sql.AddJoin("c", "e.Company");
sql.SetResultTransformer(new DistinctRootEntityResultTransformer());
dbEmlpoyees = sql.List<Employee>().ToList();
但是,这似乎返回了一个扁平列表(即返回了 Employee 和 Company 对象)。我只希望返回 Exployee 对象,但我希望填充 Employee 的 Company 属性。这可能在一个数据库调用中吗?
(我可以只获取员工列表,然后在会话仍然打开时为每条记录填充 Company 属性,但这似乎效率很低)