私は次のアイテムモデルを持っています:
public class Item
{
public int Id {get; set;}
public string name {get; set;}
public virtual ICollection<Comment> Comments {get; set;}
public virtual Comment Comment {get; set;}
}
私は次のユーザーモデルを持っています:
public class User
{
public int Id {get; set;}
public string UserName {get; set;}
public string email {get; set;}
}
そして、私は次のコメントモデルを持っています:
public class Comment
{
public int Id {get; set;}
public string text {get; set;}
public DateTime DateCreated {get; set;}
public int ItemId {get; set;}
[ForeignKey("ItemId")]
public virtual Item Item {get; set;}
public int UserId {get; set;}
[ForeignKey("UserId")]
public virtual User User {get; set;}
}
私の onModelCreating コンテキストで私は持っています
modelBuilder.Enitity<Item>().HasOptional(c=>c.Comment).WithMany();
私の目的は、要求しているユーザーのみがコメントしたアイテムをビューに戻すことです。
これまでのところ、私はやっています:
int UserId = db.Users.Where(u=>u.UserName.Equals(User.Identity.Name))
.Select(u=>u.Id).FirstOrDefault();
var itemsWithComments = db.Items.Include(c=>c.Comments).......
この時点で、次のように言いたいと思います: UserId == Comments.UserId のアイテムを選択し、アイテムをリストとして返します。
そして私のビュー(Razorを使用)
@model IEnumerable <project.Models,Item>
@foreach (var item in Model)
.....
.....
どんな助けでも大歓迎です。
ポイントを明確にする必要がある場合は、お尋ねください。
敬具