LINQからSQLで生成されたオブジェクトにモデルクラスを移植する明確な方法を理解しようとしています。私の目標は、モデルとLinqModelsを分離しておくことです。LINQを使用したモデルの移植
public class Person {
public List<Account> Accounts {get; set;}
}
public class Account {
public List<Purchase> Purchases {get; set;}
}
public Purchase {
public String Whatever {get; set;}
}
ここでは、LINQ to SQLによって生成されるデータモデルもほぼ同じです。だから、私はDataContextの部分クラス内のgetterメソッドを追加するつもりだPersonオブジェクト移入する場合:私たちは、アプリケーションの残りの部分で、このPersonオブジェクトとその子の特性を取り込む方法
public Person GetPersonByID(int personID) {
....
}
は以下のように行われているが次のようになります。
public Person GetPersonByID(int personID) {
Person res =
from p in Persons
select new Person() {
Accounts = (
from a in p.Accounts
select new Account() {
Purchases = (
from m in p.Purchases
select new Purchase() {
Whatever = m.Whatever
}
).ToList()
}
).ToList()
}
return res;
}
したがって、各子プロパティに対してクエリを拡張する必要があります。私はもっとこのような何かやることができれば、私は本当に好む何を:
public Person GetPersonByID(int personID) {
return new Person(this.Persons.SingleOrDefault(p => p.ID == personID));
}
....
public class Person {
public Person(DataModels.Person p) {
Accounts = (from a in p.Accounts select new Account(a)).ToList();
}
}
public class Account {
public Account(DataModels.Account a) {
Purchases = (from r in a.Purchases select new Purchase(r)).ToList();
}
}
public class Purchase {
public Purchase(DataModels.Purchase r) {
Whatever = r.Whatever
}
}
をこれは、はるかに管理されますが、初期GetPersonByIDコールが、私はこれらの子オブジェクトを移入するために必要なデータを返しません。これを回避する方法はありますか?
または、LINQ to SQLを使用してモデルオブジェクトを設定する方がよいでしょうか?
***私のコード例はかなり右でない場合は申し訳ありません*