我在Linq2SQL之上有一个通用的Repository实现。基本上,它在数据上下文中使用Table来获取IQueryable,然后对其运行查询:
private readonly IQueryable _queryable;
private readonly DataContext _context;
public Repository(DataContext context)
{
_context = context;
_queryable = context.GetTable().AsQueryable();
}
问题在于继承。如果我有两个继承的表,则抛出异常:
[InheritanceMapping(Code="1", Type=typeof(Staff))]
[InheritanceMapping(Code="2", Type=typeof(Resident), IsDefault=true)]
public class Person { }
public class Resident : Person { }
public class Staff : Person { }
现在在创建Repository时抛出异常:
System.InvalidOperationException:无法检索继承子类型“Staff”的表,请尝试使用Person of Table。
现在这个故事并没有结束。我可以切换到使用Repository进行查询,但是当它归结为保存对象时,我需要使用派生类型(即Staff)或者将抛出另一个异常,因此我最终有两个不同的存储库实例:一个用于保存和更新操作,另一个用于查询,而一个就足够了。
非常感谢任何帮助。
答案 0 :(得分:0)
我认为这是因为您的课程Staff
和Resident
不会继承课程Person
。