【问题标题】:How to reference IdentityDbContext in database project shared across solution如何在跨解决方案共享的数据库项目中引用 IdentityDbContext
【发布时间】:2019-05-26 14:15:30
【问题描述】:

我想利用 ASP.NET Core 项目的 Visual Studio 模板中现成的 IdentityDbContext。但是,我希望我的实体和迁移存在于共享项目中,以供解决方案的不同组件(Web、API、后台服务等)引用。

我的共享数据库项目将是一个 .NET Standard 项目,但看起来我必须添加对 Microsoft.AspNetCore.Identity.EntityFrameworkCore 的引用。向标准项目引入对专门用于 ASP.NET 的核心程序集的依赖项感觉很奇怪。这会带来什么问题吗?

【问题讨论】:

  • 这只是命名空间,即Microsoft.AspNetCore.Identity。从技术上讲,它与 ASP.NET Core 没有任何关系,尤其是对于像 Microsoft.AspNetCore.Identity.EntityFrameworkCore 这样的包。其中没有引用 ASP.NET Core 中的任何内容。它只是为 Identity 构建命名空间。

标签: c# asp.net-core .net-core entity-framework-core .net-standard


【解决方案1】:

这样应该不会有问题。如果您尝试在 Net Core 项目中引用 Net Framework 库,则会出现问题

【讨论】:

    【解决方案2】:

    您必须为您的实体对象继承一些身份类(IdentityUser),因此您必须引用Microsoft.AspNetCore.Identity.EntityFrameworkCore,但我不建议将身份类与与您的业务层相关的其他实体类一起存储。

    身份与项目的基础架构有关。只需将与身份相关的类 Dbbontext、实体类和服务存储在您已存储引用 EntityFrameworkCore 的 Db 访问代码的同一项目中。

    在引用 EntityFrameworkCore 的解决方案上持有两个不同的项目只是违反关注点分离而已。如果您想拥有 2 个不同的项目,只需使用相同版本的 EfCore。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      相关资源
      最近更新 更多