タイトルと次のテキストが明確であることを願っています。正しい用語にあまり詳しくないので、間違っている場合は修正してください。初めてLinq ORMを使用していますが、以下に対処する方法を考えています。
2 つの 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 に追加するかどうかです。
言い換えれば、私のインターフェイスは具体的に私のデータベース オブジェクトをモデル化する必要がありますか (この場合、Phones は IUser に属しません)、または実際には、ユーザーに概念的に関連付けられている関数とプロパティのセットを提供するだけです (この場合、それはですか)?
どちらのビューにも欠点があるようですが、問題に対する標準的なアプローチがあるかどうか疑問に思っています。または、あなたが共有できる一般的な知恵の言葉.
私の最初の考えは、拡張メソッドを使用することでしたが、実際にはこの場合は機能しません。