想创建一个评论表,弄不清我需要把什么外键放在那里。我想要一个用户的能力离开第二个用户的页面上的评论。这是我现在的模型。我需要补充什么?
评论
using System;
using System.Collections.Generic;
namespace sellwalker.Models
{
public class Review : BaseEntity
{
public int ReviewId{get;set;}
public string Content{get;set;}
public DateTime CreatedAt{get;set;}
public int UserId{get;set;}
public User Reviewer {get;set;}
}
}
用户
using System;
using System.Collections.Generic;
namespace sellwalker.Models
{
public class User : BaseEntity
{
public int UserId{get;set;}
public string FirstName{get;set;}
public string LastName{get;set;}
public string Email{get;set;}
public string Password{get;set;}
public string Status{get;set;}
public string ProfilePic {get;set;}
public List<Order> Orders {get;set;}
public List<Product> products {get;set;}
public List<Review> Reviews {get;set;}
public User()
{
Orders = new List<Order>();
products = new List<Product>();
Reviews = new List<Review>();
}
}
}
有了当前表,我可以写评论,但我想把它链接到特殊用户。系统不允许我在那里再添加一个用户id,那么这里最好的解决方案是什么?
最佳答案
你可以这样做:
评审模式:
public class Review
{
public int Id { get; set; }
//...
public int ReviewerId { get; set; }
public virtual User Reviewer { get; set; }
public int ReviewedUserId { get; set; }
public virtual User ReviewedUser { get; set; }
}
用户型号:
public class User
{
public int Id { get; set; }
//...
public virtual ICollection<Review> WrittenReviews { get; set; } = new HashSet<Review>();
public virtual ICollection<Review> MyReviews { get; set; } = new HashSet<Review>();
}
然后必须使用fluent API指定连接,因为EF不知道wich导航属性属于wich。
流利的API代码:
modelBuilder.Entity<Review>()
.HasRequired(x => x.ReviewedUser)
.WithMany(x => x.MyReviews);
modelBuilder.Entity<Review>()
.HasRequired(x => x.Reviewer)
.WithMany(x => x.WrittenReviews);
关于c# - 通过撰写评论建立用户之间的关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48956345/