我在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