【问题标题】:ASP.NET 5 , wanted to separate entity framework from Web ProjectASP.NET 5 ,想要将实体框架从 Web 项目中分离出来
【发布时间】:2016-06-01 23:47:18
【问题描述】:

我正在尝试实现以下应用程序结构

App.Model -- 用户模型 -- 订单模型

应用程序服务 -- 用户服务 -- 用户服务

App.Entity -- 数据库上下文

网站 -- 网络API -- 调用服务

大部分 ASP.NET 5 应用实例,在网站的启动文件中初始化实体框架。比如 .AddEntityFrameowrk() .. 等等。

需要知道如何将实体分离到单独的项目中,以及如果我们从服务项目中调用存储库,我们如何启动 DBContext。(因为启动文件不适用于类库)

【问题讨论】:

  • 我相信,只要您使用的是 asp.net ,您就需要在启动类中初始化您的服务,您可以将 AddEntityFrameowrk() 移动到任何项目中的方法的一部分,但在一天结束时,您必须从启动类中调用它
  • 这是否意味着 Entity 与 ASP.NET 5 紧密耦合?应该有某种方式分离,因为技术是新的,无法找到有关工作流程的完整信息。
  • EF 无论如何都没有与 ASP.NET 紧密耦合,只是您的问题是关于在项目中分离 EF 并仍在 Web 应用程序中使用它,除非我的问题不正确跨度>
  • 是的,你没看错。我不希望 EF 与 Web 应用程序紧密绑定。我希望网站与 => webAPI => Service => EF 进行通信。
  • 由于asp.net web应用程序是代码的入口点,它将负责启动应用程序,这是通过start类方法完成的。

标签: asp.net-core asp.net-core-mvc entity-framework-core


【解决方案1】:

在之前的项目中,我采取了在一个解决方案(或多个解决方案)中维护多个 ASP.NET 项目的方法。这将使您能够从 Web 应用程序中删除 EF 依赖项,并使 Web 应用程序仅与处理所有 EF 的 API 对话

过去,我创建了一个专用的“域”项目,其中包含所有模型,并且可以被您的 Web 应用程序和 API 项目引用。

所以项目结构应该是这样的

域项目:仅包含代表您的模型的 c# 类。从一个“空”项目开始

API:包含您的 Web API。使用 EF 与数据库交互。我会亲自为您的模型搭建 API,但这是个人选择。现在,在 ASP.NET core 1.0 RC1 中,web api 模板很差,所以我会从完整的“web 应用程序”开始,并删除所有默认视图、控制器、脚本等。引用域项目,以便您可以从模型中搭建 API 控制器

Web 应用程序:您的主要 Web 应用程序项目。从“Web 应用程序”模板开始,但使用 HttpClient 我您的控制器来使用 api 进行数据交互。过去,我创建了一组静态“api 辅助类”来简化这项任务,但这又是个人风格的选择。引用域项目,以便您可以将传入的 JSON 响应转换为完整的 .net 模型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多