【问题标题】:How to a separate ASP.Net Core Application using same Database如何使用相同的数据库分离 ASP.Net Core 应用程序
【发布时间】:2022-01-17 01:43:50
【问题描述】:

我有一个现有的 ASP.Net Core Web API,现在我想将管理模块创建为一个单独的 ASP.Net Core 应用程序,但共享同一个数据库。

我现在的问题是如何在新解决方案中处理我的 DBContext,尤其是因为以下行包含 ApplicationUser 模型

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

以及现有解决方案中存在的其他模型类,我需要从中创建我的 DBSet 实体集以使我能够查询数据库。

我希望管理模块是一个完全独立的应用程序,托管在不同的域/服务器上,但可以访问相同的数据库,以便管理员可以从管理解决方案管理数据库表条目。

我不希望它成为同一解决方案上的单独项目。相反,我希望它是一个完全独立的解决方案/应用程序,可以独立托管。

如果可以使用 ASP.Net Core 实现这一目标,我将不胜感激。

我将 ASP.Net Core 5 与 Entity Framework Core 一起使用,但如果提供解决方案,我可以迁移到版本 6。

【问题讨论】:

  • 我会先将ApplicationDbContextIdentityDbContext 完全分开。但我们只能在这里给出意见和建议。
  • @GertArnold 非常欢迎您提出意见和建议。请继续并解释如何去做
  • 不,Stack Overflow 不是正确的平台。

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


【解决方案1】:

您需要将模型创建为单独的(第三个)项目,构建该模型项目的nuget 并将其包含在两者中。有一些小挑战,因为您要在这个独立项目上运行迁移 - 但没有什么是无法克服的

这非常简单(并且可能从 ASP.NET Core 1 开始)。

【讨论】:

  • 模型可以是类库而不是块吗?或者你能解释一下为什么它必须是金块
  • 首先,它是nuget,而不是金块。其次——更重要的是,它类库。 nuget 是打包类库并包含在其他项目中的更简单方法。但是如果你想要更多的痛苦——当然,你可以与未打包的 DLL 作斗争
  • 谢谢。我会试一试并恢复
  • 你的意思是 DBContext 和模型将是第三个独立应用程序的组成部分吗?
  • @Josh - 是的,完全正确
【解决方案2】:

单个数据库可以有多个上下文。例如,如果您的数据库包含多个数据库模式并且您希望将它们中的每一个都作为独立的自包含区域来处理,那么它会很有用。

阅读下面的链接

https://www.tutorialspoint.com/entity_framework/entity_framework_multiple_dbcontext.htm

【讨论】:

  • 这与原始问题无关 - 但是,它可能对其他人有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
相关资源
最近更新 更多