Как добавить внешний ключ в ApplicationUser между отдельными проектами в EF Core?

В .NET 5.0.0 есть приложение Blazor WebAssembly с хостингом Asp.Net Core, которое разделено на 3 разных проекта: WebApp.Client, WebApp.Server, WebApp.Shared.

И я использую AspNetCore.Identity и IdentityServer4 для управления пользователями моего приложения.

Но класс ApplicationUser : IdentityUser находится в проекте WebApp.Server, а мой класс модели Foo находится в проекте WebApp.Shared. (Проект WebApp.Server имеет ссылку на проект WebApp.Shared, поэтому Foo не может using WebApp.Server.Models.)

Могу ли я добавить внешний ключ в класс ApplicationUser между отдельными проектами? Или я могу переместить 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 
}

Всего 1 ответ

Автоматический диспенсер мыльной пены от xiaomi.


Способ без многих зависимостей:

// 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; }
}

Есть идеи?

10000