Frage

Ich versuche, ein Benutzerobjekt von einem Fremdschlüssel-Referenz abzurufen, aber jedes Mal, wenn ich versuche, nichts zu tun, so wird wieder ...

Meine Tabelle eingerichtet ist wie folgt:

  FBUserID long,
  UserID uniqueidentifier

so habe ich mein Repository versuchen, den Benutzer zu erhalten, wenn sie die FBUserID vorgesehen sind:

    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;
    }

Ich habe überprüft, dass die uid (FBUserID) geführt, in richtig ist, überprüfe ich habe, dass die Benutzer-ID an die FBUserID abgestimmt ist. Und ich habe auch, um sicherzustellen, dass geprüft fbUids.Count() > 0 ...

Ich habe fbUids.FirstOrDefault().FBUserID zurückgegeben und die richtige FBUserID bekommen, aber jedes Mal, wenn ich versuche, die aspnet_Users oder aspnet_Users.UserName zurückzukehren, etc ... Ich habe nicht alles zurückgegeben. (Ich vermute, es wird immer einen Fehler aus irgendeinem Grund)

Ich habe nicht richtig Debuggen einrichten, so dass wahrscheinlich ist, warum ich so viel Ärger mit bin ... aber bisher alle die Überprüfung ich getan habe, habe ich return this.Json(/* stuff returned form the repository */) getan, damit ich eine Warnung tun können, wenn es wird zurück zum Javascript.

Wer weiß, warum ich Probleme haben würde das Benutzerobjekt aus einer Fremdschlüsselbeziehung wie das Abrufen?

Oder haben Sie Anregungen, wie um herauszufinden, was falsch ist?

War es hilfreich?

Lösung

Für jetzt mit Entity Framework 1, die Sie nicht den automatischen verzögerte Laden bekommen, zum Beispiel wenn Sie von einem Unternehmen zum anderen zu durchqueren wollen, müssen Sie entweder eine .Include("OtherEntity") auf Ihrem ausgewählten tun, um diese Einheiten in der Abfrage enthalten, oder Sie müssen explizit .Load("OtherEntity") auf EntityContext rufen, um diese Einheit zu laden.

Dies war eine Design-Entscheidung durch das EF-Team nicht automagic verzögertes Laden zu unterstützen, da sie es als zu gefährlich sein; sie wollten es klar und offensichtlich für den Benutzer machen, die er ebenfalls mit / einen zweiten Satz von Entitäten zu laden.

Aufgrund der hohen großer Nachfrage, die kommenden EF v4 (freigegeben wird mit .NET 4.0 irgendwann gegen Ende 2009) wird den automatischen verzögerte Laden unterstützen - wenn Sie es benutzen wollen. Sie müssen es explizit aktivieren, da es weg ist standardmäßig:

context.ContextOptions.DeferredLoadingEnabled = true;

einige Artikel finden Sie auf dieser neuen Funktion:

Andere Tipps

Sie wissen nicht, ob dies, was Sie fragen, aber ich einen Join wie so;

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

Haben diese Hilfe oder bin ich weg Basis?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top