如何在 EF Core 中的不同项目之间向 ApplicationUser 添加外键?

How to add a foreign key to ApplicationUser between separate project in EF Core?

.NET 5.0.0 中有一个带有 Asp.Net 核心托管的 Blazor WebAssembly 应用程序,它独立于 3 个不同的项目:WebApp.ClientWebApp.ServerWebApp.Shared.

我正在使用 AspNetCore.IdentityIdentityServer4 来管理我的应用程序用户。

但是 class ApplicationUser : IdentityUserWebApp.Server 项目中,而我的模型 class FooWebApp.Shared 项目中。 (WebApp.Server 项目引用了 WebApp.Shared 项目,因此 Foo 不能 using WebApp.Server.Models。)

我可以在单独的项目之间向 ApplicationUser class 添加外键吗?或者我可以将 ApplicationUser 移动到 WebApp.Shared 项目吗?

代码

// WebApp.Server.Models.ApplicationUser

public class ApplicationUser : IdentityUser
{
    public virtual List<Foo> Foos { get; set; }
}
// WebApp.Shard.Models.Foo
public class Foo
{
    public int ApplicationUserId { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; } // CS0246 
}

没有太多依赖的方法是:

// WebApp.Shard.Models.Foo

using System.ComponentModel.DataAnnotations.Schema;

public class Foo<TUser>
{
    public int ApplicationUserId { get; set; }

    [ForeignKey(nameof(ApplicationUserId))]
    public virtual TUser ApplicationUser { get; set; }
}