C# 为了使用ria服务,我应该从模型中删除所有继承吗?
我以前在这上面贴过一些问题,但它是不同的 请考虑我们模型的一小部分:C# 为了使用ria服务,我应该从模型中删除所有继承吗?,c#,.net,silverlight,entity-framework,wcf-ria-services,C#,.net,Silverlight,Entity Framework,Wcf Ria Services,我以前在这上面贴过一些问题,但它是不同的 请考虑我们模型的一小部分: 人 顾客 雇员 配偶 Person是基类,它有3个继承自它的类 这4个在我们的设计中非常重要,并与许多其他实体相联系。 我可以通过删除ria服务来解决我遇到的所有问题 但这确实会增加模型的复杂性 我遇到的第一个问题是,我无法查询客户、员工或配偶,但有人给了我一个解决方案,就是在DomainService中添加如下内容: public IQueryable<Employee> GetEmployees
- 人
- 顾客
- 雇员
- 配偶
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>();
}
然后我得到以下异常:
无法检索该文件的实体集
派生实体类型“配偶”。使用
EntityContainer.GetEntitySet(类型)为
获取基本实体的实体集
键入“Person”
即使配偶已经在数据库中,
我首先检索它,我得到了类似的异常
还请注意,由于某些原因,在某些地方使用“person”代替“People”
那么我如何解决这个问题,我做错了什么
当使用ria服务和继承时,我会继续遇到障碍吗
我在网上找到了一些参考资料,都说它有效,然后是一些域名服务
他们在其中意外更改了某些内容但没有详细信息的代码
我使用的是VS2010 RC1+Silverlight 4
注意:在所有混合会话中神奇地工作的数据源窗口对我不起作用。。。它从不显示任何内容此行为是由于RC1中的错误造成的。有关详细信息,请参阅 RC1没有已知的解决方法,但您显示的层次结构在RC2中应该可以正常工作。错误集中在使用派生类型(EntityRef和EntityCollection)的关联上,因此我怀疑配偶关联是在您的场景中触发错误的原因 关于“人”v。“人”——实体集的名称选择来自EF对实体名称的复数化。客户端上的查询名称来自DomainService中相应的查询名称,这意味着您可以根据需要公开公共IQueryable GetPeople()
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();