Ich bin nicht vertraut mit NHibernate Projektion. Ich versuche, es zu verwenden, so kann ich eine Liste <> eher, dass ein IList <> zurückgeben. Ich habe noch nicht viel Glück mit der Projektion in den DTO. Ich habe die folgenden Abfrage- und Domänenobjekte. Um zu beginnen, versuche ich nur, eine Liste der Aufträge zu erhalten, die eine EmployeeID erhalten. Ich durchlaufe die resultierende Liste und füge sie zu einer Liste hinzu, weil ich diese Liste serialisieren möchte. Kann mir jemand sagen, wie weit ich von der Projektion entfernt bin? Ich habe einige Beispiele gesucht und gefunden, die nicht meinen eigenen ähneln. Grundsätzlich .. Ich möchte nur eine Liste der DTOs erstellen.NHibernate Projektion zu DTO
Danke!
public List<EmployeeOrder> GetEmployessOrdersDTO(int empid)
{
var emporders = new List<EmployeeOrder>();
ICriteria criteriaSelect = NHibernateSessionManager.Instance.GetSession().CreateCriteria(typeof (Orders))
.CreateCriteria("Employees")
.Add(Expression.Eq("EmployeeID", empid));
criteriaSelect.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Products"), "OrderedProducts"));
criteriaSelect.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(EmployeeOrder)));
criteriaSelect.List<EmployeeOrder>();
foreach (var order in emporders)
{
emporders.Add(order);
}
return emporders;
}
Aufträge:
public class Orders
{
public virtual int OrderID { get; private set;}
public virtual string CustomerID { get; set; }
public virtual DateTime OrderDate { get; set; }
public virtual DateTime RequiredDate { get; set; }
public virtual DateTime ShippedDate { get; set; }
public virtual Employees Employee { get; set; }
public virtual IList<Products> Products { get; private set; }
}
Mitarbeiter:
public class Employees
{
public virtual int EmployeeID { get; private set;}
public virtual string LastName { get; set;}
public virtual string FirstName { get; set;}
public virtual string City { get; set; }
public virtual DateTime HireDate { get; set; }
public virtual string Title { get; set; }
public virtual IList<Orders> Orders { get; private set; }
}
EmployeeOrderDTO:
public class EmployeeOrder
{
public virtual string EmployeeName { get; set; }
public virtual string EmployeeTitle { get; set; }
public virtual DateTime RequiredDate { get; set; }
public virtual List<Products> OrderedProducts { get; set; }
}