我有三个博客帖子表:
Post
表格适用于PostID
,Title
等帖子属性。User
表,用于UserID
等作者属性PostLike
表包含两列,例如PostID
和UserID
,它们是外键列。此表存储用户喜欢的帖子。事实上,当用户喜欢帖子时,会在此表中插入一条记录。我的代码是:
public partial class Post
{
public Post()
{
}
public int PostID { get; set; }
[Required, StringLength(150)]
public string Title { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
}
public partial class User
{
public User()
{
Posts = new HashSet<Post>();
}
public int UserID { get; set; }
[Required,StringLength(50)]
public string Name{ get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
public partial class PostLike
{
public PostLike()
{
Posts = new HashSet<Post>();
Users = new HashSet<User>();
}
[Key,Column(Order = 0),ForeignKey("Posts")]
public int PostID { get; set; }
[Key, Column(Order = 1),ForeignKey("Users")]
public int UserID { get; set; }
public virtual ICollection<Post> Posts { get; set; }
public virtual ICollection<User> Users { get; set; }
}
但是在创建数据库时,PostLike
表没有任何外键,User
表有两个外键,例如PostLike_PostID
和PostLike_UserID
。有必要指出Post
表没有那些外键。
有可能帮助我吗?
答案 0 :(得分:0)
PostLike记录中的每条记录只有一个帖子和一个用户。所以你不需要收集类型。
public class PostLike
{
public int Id { set; get; }
public int PostID { get; set; }
public int UserID { get; set; }
public virtual Post Post { get; set; }
public virtual User User { get; set; }
}
现在要防止&#34;可能导致循环或多个级联路径&#34;错误,您只需要禁用级联删除。您可以在数据上下文类的OnModelCreating
方法中执行此操作。
public class YourDataContex : DbContext()
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PostLike>()
.HasRequired(c => c.User)
.WithMany()
.WillCascadeOnDelete(false);
}
public DbSet<User> Users { set; get; }
public DbSet<Post> Posts { set; get; }
public DbSet<PostLike> PostLikes { set; get; }
}
这将创建包含3列Id
,PostID
(FK)和UserID
(FK)