2010-12-06 63 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