2012-01-23 3 views
0

私は3つのテーブルUsers,UsersInFamily,Familysを持っています。IFユーザーのロール/ファミリーが等しい?

ユーザーが姓に付けられているかどうかを確認したいと考えています。ユーザーがロール内にいるかどうかを確認する方法と同様に、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マルチプタイザーはおそらくFamily - > Familiesを知っているので、存在しないものにアクセスしている可能性があります。また、私は "Flinstone" .Equals(user.Families.FamilyName)として書くことに慣れていますが、それはちょうど私のJavaの日からのスタイル上のホールドオーバーであり、C#では問題ではありません。 – Mikeb

+0

私はちょうどMikebに同意したかったのですが、そのプロパティはおそらく "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

関連する問題