2012-01-23 60 views
0

我有三個表Users,UsersInFamily,Familys如果用戶角色/家庭等於?

我想能夠檢查一個用戶是否附加到一個姓氏。類似於您可以檢查用戶在角色中的方式,例如User.IsInRole("Admin")。我希望能夠像做下面的,但我不能看到如何做到這一點(我是新手所以請原諒我好嗎!):

var user = context.Users.Where(c => c.UserID == FormPostID).SingleOrDefault(); 

if (user.Familys.FamilyName == "Flinstone") // Can't seem to get the family name 

我想我可能需要編寫一個函數GetFamilyForUser(UserID);進行比較,但希望我能做類似上面的事情?

基本我想檢查用戶是否在Family,並在編輯器的Role之前,他們可以進行編輯。

有點像黑手黨,只有當你在家庭中成爲一個成熟的男人,你可以有一個意見大聲笑!

+0

嗨!它給你一些錯誤?發生了什麼?導致代碼看起來不錯... –

+0

EF多元化器可能知道家庭 - >家庭,因此您可能正在訪問不存在的內容。也習慣於寫作「Flinstone」.Equals(user.Families.FamilyName)的字符串比較,但這可能只是我Java時代的一種風格保留,而不是C#中的問題。 – Mikeb

+0

我只是想同意麥克,財產可能被稱爲「user.Family.FamilyName」 – Brandon

回答

1

如果我正確理解您的數據庫設計,那麼UsersInFamily應包含UserID和FamilyID字段,以便多個用戶可以成爲多個家庭的成員?

如果是這樣的話,你不能這樣做你試圖。您需要改爲調用此:

var user = context.UsersInFamily.Where(c => c.UserID == FormPostID).SingleOrDefault(); 
if (user.Familys.FamilyName == "Flinstone") 
{ 
    // This should work 
} 

但是,如果用戶和表的familys之間的關係是多到一個,那麼你就需要改爲調用此:

var user = context.Users.Where(c => c.UserID == FormPostID).SingleOrDefault(); 
foreach (Family f in user.Familys) 
{ 
    if (f.FamilyName == "Flintstone") 
    { 
     // This works 
    } 
} 
+0

非常感謝這讓我有點生氣! – Sparkle