0

外部キー参照からユーザーオブジェクトを取得しようとしていますが、取得しようとするたびに何も返されません...

私のテーブルは次のように設定されています。

  FBUserID long,
  UserID uniqueidentifier

そのため、FBUserIDが提供されたときに、リポジトリでユーザーを取得しようとします。

    public User getUserByFBuid(long uid)
    {
        User fbUser = null;
        IEnumerable<FBuid> fbUids = _myEntitiesDB.FBuidSet.Where(user => user.FBUserID == uid);

        fbUser = fbUids.FirstOrDefault().aspnet_Users;

        return fbUser;
    }

渡されたuid(FBUserID)が正しいことを確認し、UserIDがFBUserIDと一致していることを確認しました。そして、私はそれを確認するためにもチェックしましたfbUids.Count() > 0...

戻っfbUids.FirstOrDefault().FBUserIDて正しいFBUserIDを取得しましたが、aspnet_Usersまたはaspnet_Users.UserNameなどを返そうとすると、何も返されません。(なんらかの理由でエラーが発生していると思います)

デバッグが適切に設定されていないため、おそらく多くの問題が発生しています...しかし、これまでに行ったすべてのチェックはreturn this.Json(/* stuff returned form the repository */)、戻ってきたときにアラートを実行できるようにするために行ってきました。 javascript。

そのような外部キー関係からユーザーオブジェクトを取得するのに問題が発生する理由を誰かが知っていますか?

または、何が問題なのかを見つけるための提案はありますか?

4

2 に答える 2

0

これがあなたが求めているものかどうかはわかりませんが、私はそのように参加します。

var votes = from av in dc.ArticleVotes
  join v in dc.Votes on av.voteId equals v.id
  where av.articleId == articleId
  select v;

これは役に立ちましたか、それとも私はベースから外れていますか?

于 2009-08-04T02:47:36.163 に答える
0

今のところ、Entity Framework 1では、自動遅延読み込みは行われません。たとえば、あるエンティティから次のエンティティに移動する場合は.Include("OtherEntity")、選択項目でそれらのエンティティをクエリに含めるか、次のいずれかを実行する必要があります。.Load("OtherEntity")EntityContextを明示的に呼び出して、そのエンティティをロードします。

これはEFチームによる設計上の決定であり、自動マジックの遅延ロードは危険すぎると考えられていたため、サポートされていません。彼らは、ユーザーが2番目のエンティティセットも含めている/ロードしていることをユーザーに明確かつ明確にしたいと考えていました。

高い人気の需要により、次のEF v4(2009年末に.NET 4.0でリリースされる予定)は、自動遅延ロードをサポートします-使用したい場合。デフォルトではオフになっているため、明示的に有効にする必要があります。

context.ContextOptions.DeferredLoadingEnabled = true;

その新機能に関するいくつかの記事を参照してください。

于 2009-08-04T07:00:38.850 に答える