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サーバーのストアドプロシージャ

[uを選択します。、r。from is_users u inner join is_userrole r on u.userrole_id = r.id]

のようなlinqクエリを使用する場合

var query = from u in db.User select new {u.Id、u.Login、u.Password、u.UserRole_Id、u.UserRole};

アソシエーションがいっぱいですが、プロシージャを実行すると、親オブジェクト(つまりユーザー)だけがいっぱいになります。
bltoolkit.netで、ストアドプロシージャとの関連付けはどのように行われますか?それとも手動でしか実現できませんか?

ありがとう。

4

2 に答える 2

0

AssosiationAttributeLinq式にのみ使用されます。

知っておくべきポイント:BLTは、たとえば「隠された」アクションを実行しません。linqコードを次のように変更する場合:db.User.ToList()UserPropertyが入力されていないことがわかります。サンプルでは、​​select節で実行すると言ったため、入力が実行されAssociation、SQLで適切な「INNERJOIN」を構築するためにのみ使用されます。

于 2012-04-06T10:41:06.550 に答える
0

わかりましたので、これについての経験はありませんが、単体テストをすぐに調べたところ、MapResultSetが役立つようです

単体テストはここにあります-> UnitTests\CS\Mapping\ResultSetTest.cs

于 2012-03-26T11:17:27.160 に答える