我在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)或另一个异常将被抛出,所以我最终有两个不同的存储库实例:一个用于保存和更新操作,另一个用于查询,而一个应该就足够了。
任何帮助,非常感谢。
你有没有想过这个问题?我遇到了类似的继承层次结构的问题。 – Grasshopper 2012-06-14 20:10:59