2016-04-03 11 views
1

Bir projede çalışıyorum ve güncellemeden veya silmeden önce kullanıcı kimliğini kontrol etmek istiyorum. Bunun için Entity Framework ve ASP.NET MVC kullanıyorum.Köprü tablosu kullanarak kullanıcı kimliği alma Varlık Yönetimi

Tablo 1 Bu

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

    // more stuff 

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

benim ikinci tablo Burada

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

    // more stuff here. 

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

olduğunu benim sonuncusu: Bence

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 
} 

Güncelleme için kullanıcı için kontrol etmek istediğiniz veya bu koddaki gibi mesajlarını sil ama işe yaramıyor.

@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

Sadece koşulun ilk bölümünü kontrol ederek görünümünüzü sorun gidermeyi deneyin ... daha sonra ikinci parçayı test edin ('veya' sonra) ||). Sanırım sorunun mantığının ikinci kısmı. Eğer öyleyse, linq mantığını kullanmaktan kaçının. Aksine: Model [i] .UserPost.UserId == User.Identity.GetUserID() veya bunun gibi bir şey ... umarım bu yardımcı olur. –

+0

Yap Sorunum, (||) Model [i] .UserPost.UserId kullanmayı denedim ancak bu durumun ikinci bölümünde bulunuyor. @SRQCoder – Abdullah

cevap

1


Yardımlarınız için çok teşekkür ederim ben sadece cevabını buldum ve sizlerle paylaşmak istiyorum. Sadece()) koşulundan sonraki ikinci bölümü değiştiriyorum:

@if (User.Identity.IsAuthenticated && User.IsInRole("Admin") || 
        Model[i].UserPost.Any(e => e.UserId == User.Identity.GetUserId<int>()))