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 }
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. –
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