我有以下两个实体/模型:
public class Achievement
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<User> Users { get; set; }
}
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public ICollection<Achievement> Achievements { get; set; }
}
如何在Entity Framework Core中使用上述两个实体创建连接表?我所做的对于实体框架核心知道关系并为其创建连接表就足够了吗?
我有多对多关系,我希望Entity Framework Core创建一个连接表,如下所示:
public class UserAchievement
{
public int Id { get; set; }
public int UserId { get; set; }
public int AchievementId { get; set; }
}
发布于 2019-12-15 22:47:52
我做了更多的研究,发现目前还没有让实体框架核心自动为多对多关系创建连接实体的常规方法,但是in the future this might possible。
现在,我们必须创建自己的join实体,并使用Fluent API对其进行配置。
联接实体:
public class UserAchievement
{
public int UserId { get; set; }
public User User { get; set; }
public int AchievementId { get; set; }
public Achievement Achievement { get; set; }
}
其他实体:
public class Achievement
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<UserAchievement> UserAchievements { get; set; }
}
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public ICollection<UserAchievement> UserAchievements { get; set; }
}
然后在DbContext中使用Fluent API进行配置:
public class DataContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserAchievement>().HasKey(ua => new { ua.UserId, ua.AchievementId });
}
public DbSet<User> Users { get; set; }
public DbSet<Achievement> Achievements { get; set; }
public DbSet<UserAchievement> UserAchievements { get; set; }
}
https://stackoverflow.com/questions/59348437
复制相似问题