Я использую nHibernate с C#, чтобы получить список записей или строк из базы данных, как показано в первых двух строках кода ниже. Это прекрасно работает. Я хочу сделать несколько отдельных полей из записи, а не всей записи. Я пробовал различные методы и не могу найти примеров того, как это сделать. Может ли кто-нибудь взглянуть на приведенный ниже код и сообщить мне, если я уйду в неправильном направлении.nHibernate Выберите оператор для определенных полей
Спасибо!
// THIS WORKS - Retrieve a list of my records from the table.
Ilist<MyClass> classList = db.Session.CreateQuery("FROM MyTable WHERE t.Name='AName'").List<MyClass>();
// THIS WORKS - Retrieve a list of strings from the table
IList<string> stringList = db.Session.CreateQuery("SELECT c.ConstName FROM MyTable c WHERE c.Name='AName'").List<string>();
// THIS DOES NOT WORK (RUN-TIME ERRORS). HOW CAN I SELECT ONLY A FEW FIELDS FROM EACH RECORD?
// This class contains only the records I want.
public struct MyClassB
{
private string Name;
private string Address;
public string Name
{
get { return Name; }
set { Name = value; }
}
public string Address
{
get { return Address; }
set { stationName = Address; }
}
}
IList<MyClassB> classListB = db.Session.CreateQuery("SELECT t.Name, t.Address FROM MyTable t WHERE t.Name='AName'").List<MyClassB>();
Не мог бы вы подробнее остановиться на картографической части? Это работает, и я получаю массив объектов объектов. Я думаю, что я мог бы получить доступ к полям, выполнив спецификацию [record] [field], но компилятор не позволит индексировать объект типа. –
Часть отображения. Вам просто нужно создать сопоставление для MyClassB, которое указывает на ту же таблицу, что и MyClassA, а затем отображает только два свойства MyClassB (и, конечно, часть Identity). Просто не забудьте разрешить обновления и удаления для MyClassB, так как у него нет всех строк ... – Goblin
Извините, но вы не указали OP, как это сделать с предоставленной ими моделью. –