遗传的通用Linq2SQL存储库问题

时间:2010-12-06 09:37:30

标签: c# .net linq-to-sql

我在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)或者将抛出另一个异常,因此我最终有两个不同的存储库实例:一个用于保存和更新操作,另一个用于查询,而一个就足够了。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为这是因为您的课程StaffResident不会继承课程Person