Linq to NHibernate を使用して C# に取り組んでいます。
2 セットのクラスとマッピングを定義しました。
public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
}
<hibernate-mapping ...>
<class name="Example.Employee, Example">
<id name="ID">
<generator class="assigned" />
</id>
<property name="Name" length="100" not-null="true" />
</class>
</hibernate-mapping>
public class Department
{
public DepartmentID ID { get; set; }
public int EmployeeID
{
get { return this.ID.Employee.ID; }
set { }
}
public string Name { get; set; }
}
<hibernate-mapping ...>
<class name="Example.Department, Example">
<composite-id name="ID">
<key-many-to-one name="Employee" column="EmployeeID" />
<key-property name="StartDate" />
</composite-id>
<property name="EmployeeID" not-null="true"/>
<property name="Name" not-null="true"/>
</class>
</hibernate-mapping>
次のクエリを実行しました。
var result =
from x in employeeQueryable
join y in departmentQueryable on x.ID equals y.EmployeeID
where y.ID.StartDate <= DateTime.Parse("2012/9/10")
group y by y.EmployeeID into xy
select xy.Max(a => a.ID.StartDate);
ただし、このクエリは次の例外をスローします。
クエリ ソースを特定できませんでした。ItemName = a、ItemType = Example.Department、式 = from Department a in [x]
employeeQueryable
とdepartmentQueryable
が配列型 (NHibernate の linq ではない) の場合、このクエリは例外をスローしません。
私は何をすべきか?