我希望標題和下面的文字清晰,我對正確的術語不太熟悉,所以如果我弄錯了任何錯誤,請糾正我。我第一次使用Linq ORM,並想知道如何解決以下問題。關於Linq to SQL映射對象設計的建議
說我有兩個DB表:
User
----
Id
Name
Phone
-----
Id
UserId
Model
LINQ的代碼發生器產生一束實體類。
然後我寫我自己的類和接口包裝這些的Linq類:
class DatabaseUser : IUser
{
public DatabaseUser(User user)
{
_user = user;
}
public Guid Id
{
get { return _user.Id; }
}
... etc
}
到目前爲止好。
現在很容易找到來自Phones.Where(p => p.User = user)
的用戶手機,但肯定API的消費者不需要編寫自己的Linq查詢來獲取數據,所以我應該將此查詢包裝在某個函數或屬性中。
所以問題是,在這個例子中,你會添加一個Phones屬性給IUser嗎?
換句話說,我的接口是否應該專門模擬我的數據庫對象(在這種情況下,電話不屬於IUser),還是它們實際上只是提供一組功能和屬性,這些功能和屬性在概念上與用戶在這種情況下它)?
這兩個視圖似乎都有缺陷,但我想知道是否有標準的解決方法。或者只是你可以分享的任何一般智慧詞彙。
我的第一個想法是使用擴展方法,但實際上在這種情況下不起作用。