如何在 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.Client
、WebApp.Server
、WebApp.Shared
.
我正在使用 AspNetCore.Identity
和 IdentityServer4
来管理我的应用程序用户。
但是 class ApplicationUser : IdentityUser
在 WebApp.Server
项目中,而我的模型 class Foo
在 WebApp.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; }
}
.NET 5.0.0 中有一个带有 Asp.Net 核心托管的 Blazor WebAssembly 应用程序,它独立于 3 个不同的项目:WebApp.Client
、WebApp.Server
、WebApp.Shared
.
我正在使用 AspNetCore.Identity
和 IdentityServer4
来管理我的应用程序用户。
但是 class ApplicationUser : IdentityUser
在 WebApp.Server
项目中,而我的模型 class Foo
在 WebApp.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; }
}