英文:
EF Core: A many to many relationship on the same table
问题
你好,以下是代码的翻译部分:
public class Produto
{
[Key]
public int Id { get; set; }
public string Nome { get; set; } = String.Empty;
//其他内容
public ICollection<Produto>? ProdutosRelacionados { get; set; }
}
你提到有一个名为 "Produto" 的表,其中有许多相关的产品。你想知道如何在 Fluent API 中实现它。
我尝试手动配置一个关联表,但 EF Core 不允许我进行迁移。你不能为同一张表创建一个具有两个外键的类。
英文:
Let's say I have this class:
public class Produto
{
[Key]
public int Id { get; set; }
public string Nome { get; set; } = String.Empty;
//other stuff
public ICollection<Produto>? ProdutosRelacionados { get; set; }
}
I have a table "Produto" that has many "Produto" (related products, as in every e-commerce)
How do I implement it in the fluent API?
Thanks
I tried to manualy configure a link table. EF core does not let me do the migration. You cannot create a class with two forigner keys for the same table...
答案1
得分: 0
我找到了一个解决方案。你必须配置双向导航,所以你必须创建另一个属性:
...
public ICollection<Produto>? ProdutoPai{ get; set; }
...
然后在 fluent API 中进行配置:
...
builder.Entity<Produto>(ent => {
//其他实体配置...
ent.HasMany(p => p.ProdutosRelacionados)
.WithMany(p => p.ProdutoPai)
.UsingEntity(j => j.ToTable("ProdutosRelacionados"));
});
英文:
I found a solution. You MUST configure a two way navigation, so you have to create another property
...
public ICollection<Produto>? ProdutoPai{ get; set; }
...
And then configure it on the fluent API like so
...
builder.Entity<Produto>(ent => {
//outras configs da entidade...
ent.HasMany(p => p.ProdutosRelacionados)
.WithMany(p => p.ProdutoPai)
.UsingEntity(j => j.ToTable("ProdutosRelacionados"));
});
...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论