gpt4 book ai didi

.net - 仅具有 Entity Framework 代码和 ASP.NET MVC 的模块化应用程序

转载 作者:行者123 更新时间:2023-12-04 12:43:23 24 4
gpt4 key购买 nike

我所说的模块化应用程序是指可以在不修改核心应用程序代码的情况下扩展基本功能和数据模型的应用程序。

这是一种流行的方法,例如。开源 CRM,例如 SugarCRM 或 VTiger。

这种方法可以在 asp.net mvc 应用程序中使用 Areas 或(来自 MVC contrib 的可移植区域),它允许在单独的程序集中添加新的 Controller 和 View ,而不影响核心 dll。

当想要扩展基本应用程序的数据模型时,就会出现问题。对于模型定义集中在 Edmx 文件中的 Entity Framework ,在任何实际意义上都是不可能的。这种方法不允许添加会在新程序集中引用某些基本模块表的新表。

我注意到,Orchard CMS 通过使用 nHibernate 实现了完全模块化(这很说明问题,因为他们有 Microsoft 的支持,并且该项目旨在作为技术展示)。由于 POCO 方法,Nhibernate 允许这种模块化。每个实体/表都定义在一个单独的文件中,这显然是模块化应用程序的方式。

然而,Entity Framework Code Only 方法仍有希望,它使用 POCO 定义在运行时生成 Edmx 模型。有没有人尝试过这种方法来将数据模型的定义分布在一个单独的、可插入的项目中?

最佳答案

我使用 EF Code First 和核心模块上的 GUI 扩展点组合实现了这一点。结果是:

  • 每个模块是处理 作为独立应用程序(GUI 除外)
  • 每个模块都有它的自己的数据库 (因为代码首先删除并重新创建数据库)
  • 每个模块可能会在另一个模块中复制所需的数据
  • 每个模块都是一个服务
  • 每个模块都可以通过核心扩展GUI 扩展点 通过 IoC 容器
  • 模块可以通过 与每个模块进行通信。异步消息 (nServiceBus) 和 同步 RPC (WCF)

  • 请注意,这是我们为 SOA 设计的企业应用程序。

    使用 EF Code First,如果您手动管理数据库(即不要删除和重新创建),您可以采用上面的一些概念并简化它。您可能需要自定义 IDatabaseInitializer 支持它,但它应该是可能的。

    关于.net - 仅具有 Entity Framework 代码和 ASP.NET MVC 的模块化应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142209/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com