我正在設計一個相當複雜的託管Web應用程序,需要支持多個彼此有效隔離的「團隊」。例如,表People
,Areas
,Reports
等將有混在公司A,B,C由團隊填充的數據,並在上下行,並記錄在從公司A的用戶,他應該只看到過與公司A相關的數據。我的計劃是創建Team
與(幾乎)所有其他類型之間的關係,並使用存儲庫訪問所有其他類型,並始終查詢TeamId
與登錄人的TeamId
相匹配的位置。這是EF Code First中TPC繼承的合法使用嗎?
所以,因爲我想有
[ForeignKey("Team")]
public int TeamId { get; set; }
public virtual Team Team { get; set; }
上幾乎每一個類,我THI nking它可能是不錯的把那些在一個抽象類,繼承這些特性:
public abstract class OfTeam {
[ForeignKey("Team")]
public int TeamId { get; set; }
public virtual Team Team { get; set; }
}
public class Person : OfTeam {
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
但是,我知道這是不是真的是什麼繼承。所以我想知道
- 這是否會工作?
- 這是一個可怕的主意嗎?
我想到了一個界面。我可以這樣做。我並不完全關注緩存TeamId,而且我不確定CurrentIdentity是什麼,但這聽起來很有趣。關心一切嗎? – Andrew
如果它是一個Web應用程序,您可以創建一個新的GenericPrincipal(yourCustomIdentity,null)並將其設置爲Context.User以及System.Threading.Thread.CurrentPrincipal。自定義標識可以使用您在Session中放置的值或從數據庫中檢索的值填充。這使您可以使用'(MyCustomIdentity)System.Threading.Thread.CurrentPrincipal.Identity'輕鬆訪問任何地方的身份 – AaronLS