我从一个教程开始,在那里我创建了类:
namespace SamuraiApp.Domain
{
public class Battle
{
public int BattleId { get; set; }
public string Name { get; set; }
public List<Samurai> Samurais = new List<Samurai>();
}
}
以及
namespace SamuraiApp.Domain
{
public class Samurai
{
public int Id { get; set; }
public string Name { get; set; }
public List<Quote> Quotes { get; set; } = new List<Quote>();
public List<Battle> Battles { get; set; } = new List<Battle>();
}
}
和数据库上下文
public class SamuraiContext:DbContext
{
public DbSet<Samurai> Samurais { get; set; }
public DbSet<Quote> Quotes { get; set; }
public DbSet<Battle> Battles { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data Source= (localdb)\\MSSQLLocalDB; Initial Catalog=SamuraiAppData");
// si on a sqlLite on va écrire optionsBuilder.UseSqlLite("<chaine de connexion sqlite>")
}
}
我以为entityFramework6单独解释多对多关系并生成中间表BattleSamurai,但生成基础时没有考虑这种关系(请参见screenshot)。
请问你有何评论?
2条答案
按热度按时间vatpfxk51#
将
public int BattleId { get; set; }
与Samurai
相加,将public int SamuraiId { get; set; }
与Battle
相加。确保您可以在迁移中查看
Samurai
是否具有指向Battle
的外键,反之亦然。9jyewag02#
我正在关注这篇关于EF中多对多关系的文章。
根据它,代码应该如下所示(请注意,我看不到Quote类,可能您也必须在Samurai类中重构该类以匹配ICollection):