2012-03-26 118 views
0

bltoolkit協會我有2個實體:SQL Server上與存儲過程的執行

[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; 
    }  

和存儲過程從查詢

[選擇ü獲取數據。 ,r。從is_usersÜ 內部聯接is_userrole R ON u.userrole_id = r.id]

如果我使用LINQ查詢像

變種查詢=從u在db.User 選擇新 { u.Id , u.Login, u.Password, u.UserRole_Id, u.UserRole };

關聯填充,但如果我執行過程只有父對象(即用戶)填充。
bltoolkit.net如何與存儲過程進行關聯? 或者它只能手動實現?

謝謝。

回答

0

好了,所以我沒有任何這方面的經驗,但我很快就看了單元測試,它看起來像MapResultSet可以幫助你

單元測試的位置 - >單元測試\ CS \製圖\ ResultSetTest .cs

+0

我有SP - SelectByLogin(字符串)和 公共抽象類UserAccessor:gosDBAccessor { 公共抽象用戶SelectByLogin(串@login); } 該SP具有複雜的查詢和INNER JOIN。 執行 - UserAccessor ua = DataAccessor.CreateInstance (); User user = ua.SelectByLogin(Login); 該用戶沒有填充UserRole屬性。 mapset在哪裏包含代碼? – 2012-03-26 12:20:46

+0

真的不明白你的問題在這裏,你看看單元測試嗎? – 2012-03-26 13:37:58

0

AssosiationAttribute僅用於Linq表達式。

要知道:BLT沒有「隱藏」的行動,例如。如果你將你的linq代碼改爲:db.User.ToList()你會看到UserProperty沒有被填充。在你的樣本填充完成後,因爲你已經說過在select clausue中完成了它,而Association僅用於在SQL中構建適當的'INNER JOIN'。