bltoolkit связь с выполнением хранимой процедуры - PullRequest
0 голосов
/ 26 марта 2012

У меня есть 2 объекта:

[TableName("is_userrole")]



public class UserRole
  {
      [MapField("id"), PrimaryKey, Identity,
      public Guid id;
      [NotNull]
      public string Name;       
  }    
[TableName("is_users")]
  public class User
  {
      [MapField("id"), PrimaryKey, Identity,
NonUpdatable]
      public Guid Id;
      [NotNull]
      public string Name;
      [NotNull]
      public string Login;
      [NotNull]
      public string Password;

      public Guid UserRole_Id;    
      [Association(ThisKey = "UserRole_Id", OtherKey = "Id",
CanBeNull = false)]
      public UserRole UserRole;
  }    

и хранимая процедура на сервере sql, которая получает данные из запроса

[Выберите u. , r. из is_users u внутреннее объединение is_userrole r для u.userrole_id = r.id]

если я использую запрос linq как

var query = от вас в db.User выберите новый { u.Id, u.Login, u.Password, u.UserRole_Id, u.UserRole };

Заполнение ассоциаций, но если я выполняю процедуру, заполнен только родительский объект (т.е. пользователь).
Как в bltoolkit.net ассоциации с хранимыми процедурами сделаны? Или это может быть реализовано только вручную?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2012

AssosiationAttribute используется только для выражений Linq.

Обратите внимание: BLT не выполняет никаких «скрытых» действий, например если вы измените свой код linq следующим образом: db.User.ToList(), вы увидите, что UserProperty не заполнен. В вашем примере заполнение завершено, потому что вы сказали, что сделали это в предложении select, а Association используется только для построения правильного INNER JOIN в SQL.

0 голосов
/ 26 марта 2012

Хорошо, поэтому у меня нет никакого опыта с этим, но я быстро посмотрел на модульные тесты, и похоже, MapResultSet может помочь вам

модульный тест здесь ->UnitTests \ CS \ Mapping \ ResultSetTest.cs

...