Frage

Ist es möglich, zu wählen, was Spalt Ich möchte im Gegenzug von Session.CreateCriteria ()?

EGZ.

var x = session.CreateCriteria();
    x.CreateAlias("EmployeePosition", "employeePosition");
    x.Add(Restrictions.Eq("employeePosition.Name", "Developer"));

und ist es eine Möglichkeit, etwas hinzufügen wie „wählen Name“ zu vermeiden, die ganze Reihe herunterzuladen.

War es hilfreich?

Lösung

eine Klasse, die nur die Eigenschaften, die Sie benötigen, oft ist dies eine Zusammenfassung Klasse wie {Id, Etikett} und Sie würden wieder verwenden es überall Sie eine einfache Art benötigen, in einem zum Beispiel auflistet. Verwenden ProjectionList zu definieren, welche Spalten zurückzukehren. Dann Transformers.AliasToBean verwenden Sie das Ergebnis auf Ihre einfache Art zu verwandeln.

ProjectionList projectionList = Projections.ProjectionList();
projectionList.Add(Projections.Property("EmployeeID"), "Id");
projectionList.Add(Projections.Property("EmployeePosition"), "Label");
var x = DetachedCriteria.For(Employee);
x.SetProjection(projectionList);
x.SetResultTransformer(Transformers.AliasToBean(SimpleType)));
return x.GetExecutableCriteria(UnitOfWork.CurrentSession).List<SimpleType>();

Andere Tipps

können Sie tun, um diese Projektionen mit:

IList<Object[]> list = session.CreateCriteria(typeof(Employee))
  .SetProjection(Projections.ProjectionList()
    .Add(Projections.Property("FirstName"))
    .Add(Projections.Property("LastName"))
  ).List<Object[]>();

  foreach( Object[] person in list )
  {
    String firstName = person[0];
    String lastName = person[1];
  }

Überprüfen Sie den NHibernate.Expressions Namespace für andere Projektionen aus als auch.

Ich würde vorschlagen, Linq zu NHibernate einen Versuch. Es werden Sie tun, was Sie auf ganz natürliche Art und Weise fragen.

Um in der Danas Antwort, wenn Sie eine tatsächliche Klasse haben mögen Sie lesen Sie es in, können Sie auch Transformers.AliasToBean mit der Projektion verwenden. NHibernate wird dann versuchen, Eigenschaften des Objekts zu füllen mit den Werten aus passenden Feldnamen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top