0

我有 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 server 上的存储过程

[选择你。, r。from is_users u inner join is_userrole r on u.userrole_id = r.id]

如果我使用 linq 查询

var query = from db.User 中的 u 选择新 { u.Id, u.Login, u.Password, u.UserRole_Id, u.UserRole };

关联填充,但如果我执行程序只填充父对象(即用户)。
如何在 bltoolkit.net 中与存储过程建立关联?还是只能手动实现?

谢谢。

4

2 回答 2

0

AssosiationAttribute仅用于 Linq 表达式。

要知道的一点:例如,BLT 不执行任何“隐藏”操作。如果您将 linq 代码更改为:db.User.ToList()您会看到 UserProperty 未填写。在您的示例中填充已完成,因为您在选择条款中说过要完成它,并且Association仅用于在 SQL 中构建正确的“INNER JOIN”。

于 2012-04-06T10:41:06.550 回答
0

好的,所以我对此没有任何经验,但我很快查看了单元测试,看起来MapResultSet可以帮助你

单元测试在这里-> UnitTests\CS\Mapping\ResultSetTest.cs

于 2012-03-26T11:17:27.160 回答