外部キーとGUIDは、LINQ to Entitiesでどのように扱われますか?
質問
これを例として使用します...
UserProfileテーブルの列は次のとおりです。
ProfileID (プライマリキー)
UserID (外部キー)
住所
電話番号
今、LINQ to Entitiesを使用して新しいユーザーをデータベースに追加したい場合、ここで私がやっていることは次のとおりです。
UserProfile profileToAdd;
profileToAdd.ProfileID = 0;
profileToAdd.Address = "123 MyStreet";
profileToAdd.PhoneNumber = "123-4567";
/* How do I add in the UserID here? */
_myDB.AddToUserProfiles(profileToAdd);
いくつかの質問...
-
外部キーの処理について知っておく必要のある特別なものはありますか、それともAddressまたはPhoneNumberで行ったように割り当てることができますか?
-
UserIdはGuidであり、現在のユーザーのUserIdから取得する必要があります。 MembershipクラスまたはUserクラスにアクセスできないようです(これはC#ライブラリであるため、何らかの方法で参照する必要があると推測していますが、プロジェクトは既にライブラリを参照しているため、参照し直すことはできません。循環依存関係があります)
-
Guidの扱い方がよくわかりません。
getProfileByUserName(string userName)
を実装するとき、ここに私の問題があります...
まず、UserIDを取得できません。ここで試しました:
Guid currUser = (Guid)from user in _ myDB.aspnet_Users
where user.UserName == userName
select new { user.UserId };
しかし、何らかの理由でGUIDにキャストできないと言っています。
これらの質問のいずれかに洞察を提供できる場合、私は非常に感謝します!
ありがとう、
マット
解決
データベースに外部キー関係の適切な制約が含まれる場合、 UserProfile
クラスに User
オブジェクトを指すメンバーが必要です。名前は、 UserProfileUser
またはそのようなもののように、少し変わっているかもしれません。
ただし、図でこの名前を変更できます。ユーザーエンティティオブジェクトへのポインタを設定するだけで、フレームワークが正しいIDを割り当てます。