我以前已经发布过一些关于这个的问题,但它是不同的。
因此,考虑一下我们模型的一小部分:
Person是具有3个继承类的基类。
这4个在我们的设计中非常重要,并与许多其他实体链接。
我可以通过删除RIA服务来解决我遇到的所有问题。
但这确实会增加模型的复杂性。
我遇到的第一个问题是,我无法查询客户、员工或配偶,但有人给了我一个解决方案,就是向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(类型)到
获取基本实体的实体集
类型“人”。
即使配偶已经在数据库中,
我先检索它,得到了类似的例外。
还请注意,由于某些原因,在某些地方使用“人”而不是“人”…
那么我该怎么解决这个问题呢?我做错了什么?
当使用带有继承的RIA服务时,我会继续遇到困难吗?
我在网上找到了一些参考资料,都说它有效,然后是一些域名服务
代码中,他们彻底改变了一些东西,但没有细节…
我用的是VS2010 RC1+SilverLight 4
注:
在所有混合会话中神奇工作的数据源窗口对我来说不起作用…它从不显示任何东西