Я уже писал несколько вопросов по этому вопросу, но это не так.
Итак, рассмотрим небольшую часть нашей модели:
Person - это базовый класс, у которого есть 3 класса, которые наследуются от него.
Эти 4 являются центральными в нашем дизайне и связаны со многими другими объектами.
Я мог бы решить все проблемы, с которыми я сталкиваюсь в ria-services, удалив
наследование, но это действительно увеличило бы сложность модели.
Первая проблема, с которой я столкнулся, заключалась в том, что я не мог запрашивать клиентов, сотрудников или супругов, но кто-то дал мне решение, заключающееся в добавлении чего-то вроде этого в DomainService:
public IQueryable<Employee> GetEmployees()
{
return this.ObjectContext.People.OfType<Employee>();
}
public IQueryable<Customer> GetCustomers()
{
return this.ObjectContext.People.OfType<Customer>();
}
public IQueryable<Spouse> GetSpouses()
{
return this.ObjectContext.People.OfType<Spouse>();
}
Затем я попробовал что-то, что показалось мне вполне нормальным:
var employee = new Employee()
{
//.... left out to reduce the length of this question
};
var spouse = new Spouse()
{
//.... left out to reduce the length of this questions
};
employee.Spouse = spouse;
context.People.Add(spouse);
context.People.Add(employee);
context.SubmitChanges();
Тогда я получаю следующее исключение:
Невозможно получить набор объектов для
производный тип сущности 'Супруг'. использование
EntityContainer.GetEntitySet (Type) для
получить набор сущностей для базовой сущности
введите «Персона».
Даже когда супруг уже находится в базе данных,
и сначала я получаю его, но получаю похожие исключения.
Также обратите внимание, что по некоторым причинам в некоторых местах вместо "Люди" используется "Персоны" ...
Так как мне решить эту проблему, что я делаю не так?
и буду ли я врезаться в стены при использовании сервисов ria с наследованием?
Я нашел некоторые ссылки в Интернете, все говорят, что это работает, а затем некоторые DomainService
код, в котором они что-то поменяли, но без подробностей ...
Я использую VS2010 RC1 + Silveright 4
Примечание: Окно источников данных, которое волшебным образом работает во всех сеансах MIX, не работает для меня ... оно никогда ничего не отображает