gpt4 book ai didi

c# - Entity Framework Core 多对多更改导航属性名称

转载 作者:行者123 更新时间:2023-12-03 14:13:30 25 4
gpt4 key购买 nike

我有一个名为“LogBookSystemUsers”的表,我想在 EF Core 5 中设置多对多的功能。我几乎让它工作了,但问题是我的 ID 列被命名为 SystemUserIdLogBookId但是当 EF 进行连接时,它会尝试使用 SystemUserIDLogBookID .这是我当前的配置代码:

modelBuilder.Entity<SystemUser>()
.HasMany(x => x.LogBooks)
.WithMany(x => x.SystemUsers)
.UsingEntity(x =>
{
x.ToTable("LogBookSystemUsers", "LogBooks");
});
我试过这个:
modelBuilder.Entity<SystemUser>()
.HasMany(x => x.LogBooks)
.WithMany(x => x.SystemUsers)
.UsingEntity<Dictionary<string, object>>("LogBookSystemUsers",
x => x.HasOne<LogBook>().WithMany().HasForeignKey("LogBookId"),
x => x.HasOne<SystemUser>().WithMany().HasForeignKey("SystemUserId"),
x => x.ToTable("LogBookSystemUsers", "LogBooks"));
但这只是添加了两个新列,而不是设置当前列的名称。
这是所有数据库第一。我不想为多对多表使用一个类,因为我在我的项目中一直这样做,我不希望一堆无用的类四处飘散。有任何想法吗?

最佳答案

有趣的错误,考虑将其发布到 EF Core GitHub 问题跟踪器。
根据您所尝试的想法应该这样做

modelBuilder.Entity<SystemUser>()
.HasMany(x => x.LogBooks)
.WithMany(x => x.SystemUsers)
.UsingEntity<Dictionary<string, object>>("LogBookSystemUsers",
x => x.HasOne<LogBook>().WithMany().HasForeignKey("LogBookId"),
x => x.HasOne<SystemUser>().WithMany().HasForeignKey("SystemUserId"),
x => x.ToTable("LogBookSystemUsers", "LogBooks"));
它适用于除 {RelatedEntity}Id 之外的任何其他 FK 属性名称。当相关实体PK属性被调用时 ID .
作为解决方法,直到它得到修复,明确定义所需的连接实体属性 之前 配置关系:

// add this
modelBuilder.SharedTypeEntity<Dictionary<string, object>>("LogBookSystemUsers", builder =>

{
builder.Property<int>("LogBookId");
builder.Property<int>("SystemUserId");
});
// same as the original
modelBuilder.Entity<SystemUser>()
.HasMany(x => x.LogBooks)
.WithMany(x => x.SystemUsers)
.UsingEntity<Dictionary<string, object>>("LogBookSystemUsers",
x => x.HasOne<LogBook>().WithMany().HasForeignKey("LogBookId"),
x => x.HasOne<SystemUser>().WithMany().HasForeignKey("SystemUserId"),
x => x.ToTable("LogBookSystemUsers", "LogBooks"));

关于c# - Entity Framework Core 多对多更改导航属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65043926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com