Я пытаюсь выяснить ясный способ заполнения классов модели из созданных объектов LINQ to 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. Так что, если я хочу, чтобы заполнить объект Person я собираюсь добавить метод геттер в разделяемом классе DataContext:
public Person GetPersonByID(int personID) {
....
}
Как заполнить этот Person объект и его потомков свойства на протяжении остальной части приложения делается как это:
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?
*** Извините, если мои примеры кода, не совсем верно *