C# EF Core 5.0添加多对多使一对多无法确定

C# EF Core 5.0添加多对多使一对多无法确定,c#,entity-framework,ef-core-5.0,C#,Entity Framework,Ef Core 5.0,我想利用ef core 5.0中新的多对多功能 我现有的课程是 public class User : IdentityUser<int> { } public class User : IdentityUser<int> { public ICollection<Notification> Notifications { get; set; } } 我想在它们之间添加一个多对多关系,这样类就 public class User : Identit

我想利用ef core 5.0中新的多对多功能

我现有的课程是

public class User : IdentityUser<int>
{
}
public class User : IdentityUser<int>
{
    public ICollection<Notification> Notifications { get; set; }
}
我想在它们之间添加一个多对多关系,这样类就

public class User : IdentityUser<int>
{
}
public class User : IdentityUser<int>
{
    public ICollection<Notification> Notifications { get; set; }
}
多对多现在似乎已解决,但
dotnet ef迁移添加NotificationRecipients
导致
无法确定“User”类型的导航“Notification.Creator”所表示的关系。手动配置关系,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.ignore”忽略此属性。

是否有任何注释可以添加到
Notification.Creator
Notification.Updater
或任何其他方式来定义
用户
通知
之间的一对多关系


我使用MSSQL作为数据库。

两个实体之间的多个关系通常无法自动确定,需要配置。EF Core中的许多内容(尤其是相关关系)只能使用fluent API进行配置

因此,与其寻找不存在或不直观的数据注释,只需流畅地配置所需的关系(至少-导航属性和基数):

modelBuilder.Entity(builder=>
{
HasOne(e=>e.Creator).WithMany();
HasOne(e=>e.Updater).WithMany();
HasMany(e=>e.Recipients)。WithMany(e=>e.Notifications);
});

我无法理解您在用户和通知之间建立了多对多关系,同时您还需要在用户和通知之间建立一对多关系!!!这是不可行的,你可以添加CreatorId和UpdateId,并将[NotMapped]添加到Creator属性和UpdaterI,我很确定这是可能的。这些关系有不同的用途,并且在以前的迁移中添加了创建者和更新者。CreatorId和UpdaterId已经是DBColumns。我的意思是,以这种方式不可行,请尝试添加CreatorId并使creator不映射或使用fluent api进行手动配置,作为Ivan的回答。您可能需要
builder.Entity().
?如果我尝试此操作,则会得到
实体类型“IdentityUserLogin”需要定义主键。如果要使用无键实体类型,请在“OnModelCreating”中调用“HasNoKey”。有关无键实体类型的详细信息,请参见https://go.microsoft.com/fwlink/?linkid=2141943.
当我尝试创建迁移时。如果您继承了看起来的
IdentityDbCiontext
,请确保调用
base.OnModelCreating(modelBuilder)在您的
OnModelCreating
覆盖的开头。如果这没有帮助,那么您还有另一个单独的问题-EF Core报告找到的第一个问题,当它被修复时-下一个问题等等。此代码应该已经修复了您的问题中的关系问题。其他问题-新问题。
public class Notification
{
    //[...]
    [InverseProperty("Notifications")]
    public ICollection<User> Recipients { get; set; }
}