Критерии представления запроса соединения - PullRequest
0 голосов
/ 22 апреля 2009

Есть два класса

1 класс A [свойства: -aid, aname]

2 класс B [свойства: -bid, A, bname]

DropDownList ddlist;

ICriteria criteria = ActiveRecordMediator<B>.GetSessionFactoryHolder()
                     .CreateSession(typeof(B)).CreateCriteria(typeof(B))
                     .setFetchMode(“A”,FetchMode.JOIN);

ddlistToLet.DataSource = attribute.List ();

ddlistToLet.DataTextField = "bname";

ddlistToLet.DataValueField = "aid";

ddlistToLet.DataBind ();

Я получаю эту ошибку

Привязка данных: «B» не содержит свойство с именем «aid».

Как решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 23 апреля 2009

Укажите для свойства значение.

class B
{
  public A A { get; set;}
  public aid { get { return A.aid; } }
}

Если вам это не нравится, потому что вы не хотите менять свой класс, тогда вы можете использовать специальный класс для привязки к элементу управления.

0 голосов
/ 17 марта 2010

Преобразуйте результаты вашего запроса в более дружественный к привязке объект:

public class MyDTO {
  public string BeeName { get; set; }
  public string AId { get; set; }
}

// .. (snip) ..

ICriteria criteria = ActiveRecordMediator<B>.GetSessionFactoryHolder()
  .CreateSession(typeof(B)).CreateCriteria(typeof(B))
  .CreateCriteria(“A”)
  .SetProjection(Projections.ProjectionList()
    .Add(Projections.Property("bname", "BeeName"))
    .Add(Projections.Property("aid", "AId"))
  )
  .SetResultTransformer(Transformers.AliasToBean(typeof(MyDTO)));

IList<MyDTO> results = criteria.List<MyDTO>();
0 голосов
/ 23 апреля 2009

При использовании критериев NHibernate возвращает двумерный массив результатов. Я думаю, что раскрывающийся список не может понять, какова основная структура объекта. Посмотрите на результаты, и вы сможете изменить привязку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...