爲了實現存儲庫模式,我發現的所有示例都非常簡單(忽略連接)或使用實體框架。DAL使用dapper的存儲庫模式連接
我的數據庫表如下所示
tblUser {id, fname, lname, email, password, dateAdded}
tblAccount {id, name, isActive, dateAdded}
tblAccountUser {userId, accountId, isActive, dateAdded}
一個用戶可以有多個帳戶和帳戶可以有多個用戶。 tblUserAccount有一個布爾值,告訴我們用戶是否對帳戶有效以及何時添加了用戶。
我的pocos直接映射到具有關係的附加屬性的表。有沒有更好的方法來做到這一點?我想不出更好的方式讓我的存儲庫返回類似於GetUsersWithAccounts(userId)的關係。
tblUser {
guid id,
string fname,
string lname,
string email,
string password,
date dateAdded,
IList<tblAccount> accounts
}
tblAccount {
guid id,
string name,
bool isActive,
date dateAdded,
IList<tblUser> users
}
//should i have a tblAccountUser poco with something like
//{tblUser user, tblAccount account, bool isActive, date dateAdded}
我有以下的庫:
UserRepository {
Add()...
...
tblUser GetById(guid userId) {}
IEnumberable<tblUser> GetAll() {}
//was unsure if Account repo should retrieve a user's accounts or if the user repo should.
//using uow.User.GetAccounts(user.id) seems natural but please feel free to let me know what you think
IEnumberable<tblAccount> GetAccounts(guid userId){}
//this is the one i was really unsure about
//this would return tblUser obj with its tblUser.Accounts filled.
IEnumberable<tblUser> GetAllWithAccounts()
}
AccountRepository{
Add()
...
AddUser(guid userId) //only adds relation to tblAccountUser Makes sense?
}
//Should i have a repository for the Account <-> User relations?
問題是所有的地方,總結一下:
- 當返回從我的回購波蘇斯我應該如何回報關係。正如我在上面的pocos中顯示的那樣,還是有更好的方法?
- 我的關係表應該得到他們自己的pocos嗎?如果是這樣,是否只有當他們有額外的數據,如isActive和用戶/賬戶特定的設置。
- 在我的倉庫裏,我不確定哪個倉庫在處理關係時應該處理特定的請求。
- 我應該有另一個賬戶/用戶關係的回購?
批評,鏈接,歡迎大家的到來謝謝。
編輯:
附加說明:應該提到。我想讓用戶/賬戶在一起的原因是因爲他們將在一個網格中,我們可以激活/停用並修改用戶或其賬戶的值。
A1&3之前應該說過,但是將它用於網格,因此所有用戶都必須獲得所有帳戶。 10k以上的通話表現會很慢。好主意我可能會在其他地方使用。 A 2.我在哪裏可以找到tblAccountUser.IsActive,以查看用戶是否對特定帳戶有效。 A4。有一個帳戶是你的意思是一個tblAccountUsers? – ozz
A 2在AccountRepository中。您可以篩選非活動賬戶或將IsActive作爲賬戶對象中的一個屬性返回。 A 4我的意思是AccountRepository。創建像GetAccountsByUserId – detale
方法我試着做你建議通過不活動/活動過濾,並單獨顯示它們,這是一種混亂,因爲我們需要能夠通過user.email和account.name搜索取決於哪個更相關。 IsActive是帳戶和用戶帳戶關係的屬性,這使得它獨一無二。由於存在額外的列而不僅僅是(AccountID,UserID),我被建議在其他地方爲關係創建poco。到目前爲止哪個工作更好。 – ozz