2010-12-06 67 views
0

我在Linq2SQL之上有一个通用的存储库实现。基本上,它使用的数据上下文表在它获得的IQueryable,然后运行查询:具有继承性的通用Linq2SQL存储库问题

 
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 { } 

现在创建仓库时,抛出一个异常:

System.InvalidOperationException:无法检索继承亚型“员工”一个表,表试试的人代替。

现在的故事并没有在这里结束。我可以切换到使用Repository进行查询,但是当涉及到保存对象时,我需要使用派生类型(即Staff)或另一个异常将被抛出,所以我最终有两个不同的存储库实例:一个用于保存和更新操作,另一个用于查询,而一个应该就足够了。

任何帮助,非常感谢。

+0

你有没有想过这个问题?我遇到了类似的继承层次结构的问题。 – Grasshopper 2012-06-14 20:10:59

回答

0

我认为这是因为你的类StaffResident不从类Person继承。

+0

感谢您指出它,但它是一个错字。我修复了上面的代码片段。 – 2010-12-06 10:24:58