2016-04-03 7 views
1

Ich arbeite in einem Projekt und ich möchte nach Benutzer-ID überprüfen, bevor er aktualisieren oder löschen. Ich benutze dafür Entity Framework und ASP.NET MVC.Wie bekomme ich userId mit Bridge-Tabelle Entity Framework

Tabelle 1 ist

public class User { 
    public int UserId { get; set; } 

    // more stuff here. 

    public ICollection<UserPost> UserPost{get; set;} 
} 

Hier ist meine zweite Tabelle

public class Post { 
    public int PostId { get; set; } 

    // more stuff 

    public ICollection<UserPost> UserPost{get; set;} 
} 

Dies ist meine letzte:

public class UserPost { 
    public int userPostId { get; set; } 
    public int userId {get; set; } 
    public int postId {get; set; } 

    public virtual User User { get; set; } 
    public virtual User Post{ get; set; } 
    // and more 
} 

Aus meiner Sicht möchte ich für den Benutzer überprüfen, zu aktualisieren oder lösche seine Posts wie diesen Code, aber es funktioniert nicht.

@model List<MyFinalProject.Core.Domain.Post> 
// Razor syntax here 
    @if (User.Identity.IsAuthenticated && User.IsInRole("Admin") || 
          Model[i].UserPost.Where(u => u.UserId == User.Identity.GetUserId<int>())) 
         { // some logic } 
+0

Versuchen Sie, Ihre Ansicht zu beheben, indem Sie nur den ersten Teil des bedingten if ... dann testen Sie den zweiten Teil (nach dem 'oder' ||). Ich denke, es ist der zweite Teil der Logik, der das Problem darstellt. Vermeiden Sie in diesem Fall die Verwendung von linq logic. Eher: Model [i] .UserPost.UserId == User.Identity.GetUserID() oder so ähnlich ... hoffe das hilft. –

+0

Yap Mein Problem ist im zweiten Teil der Bedingung nach (||) Ich habe versucht, mit Model [i] .UserPost.UserId, aber ich konnte keinen Zugriff dafür erhalten. @SRQCoder – Abdullah

Antwort

1

Vielen Dank für Ihre Hilfe Ich habe gerade die Antwort und ich möchte es mit Ihnen teilen. Ich ändere nur den zweiten Teil nach (||) Bedingung zu:

Verwandte Themen