如何在EF Core 6中使用Fluent API自定义多对多连接表名称及主键字段(无需显式连接实体类)
自定义EF Core 6多对多连接表的主键字段名称(无需显式连接实体)
当然可以!在EF Core 6中,你不需要创建显式的连接实体类,就能通过Fluent API自定义多对多连接表的主键字段名称——只需要在你现有的UsingEntity配置基础上,补充两个关键方法即可。
修改后的Fluent API配置
你只需要在UsingEntity的配置链中添加MapLeftKey和MapRightKey方法,分别指定对应实体的外键字段名称:
builder.Entity<Part>() .HasMany(left => left.Products) .WithMany(right => right.Parts) .UsingEntity(join => join .ToTable("ProductParts") .MapLeftKey("PartId") // 对应Part实体的外键字段名,替换默认的PartsPartId .MapRightKey("ProductId")); // 对应Product实体的外键字段名,替换默认的ProductsProductId
配置说明
MapLeftKey:对应HasMany方法中指定的左侧实体(这里是Part)的外键字段,我们直接指定为PartId,去掉了默认的前缀。MapRightKey:对应WithMany方法中指定的右侧实体(这里是Product)的外键字段,指定为ProductId即可。
生成的SQL效果
修改配置后,EF Core生成的连接表SQL会变成你期望的样子:
CREATE TABLE [dbo].[ProductParts]( [PartId] [int] NOT NULL, [ProductId] [int] NOT NULL )
另外,EF Core会自动将这两个字段设置为复合主键,无需额外配置——完全满足你的需求。
内容的提问来源于stack exchange,提问作者user3495513
相关产品推荐
相关产品推荐

