【问题标题】:Where does class behaviour reside in EF Core Models类行为在 EF Core 模型中的位置
【发布时间】:2023-03-06 04:49:01
【问题描述】:

也许这是一个非常基本的问题,但我无法弄清楚。 让我解释一下:

我从 MVC 原理(我用过 Laravel)知道有模型和控制器(这里不关心视图)。模型与 EF Core 中的相同,它们表示数据库中的表等。然后我们有控制器,我们在其中实现 CRUD 功能。

问题是我应该在哪里编写类似 CRUD 的功能,即使它不是 CRUD 逻辑。我的直觉说我只需要创建另一个代表这个模型的控制器的类,并在那里指定所有的 CRUD 功能,比如阅读、写作等。但我不知道这个想法是否符合惯例,如果有任何约定或最佳实践。

我应该在哪里实现这个?

感谢您的帮助! :)

【问题讨论】:

    标签: c# .net database model-view-controller ef-core-3.0


    【解决方案1】:

    我假设您正在创建一个 Web API 或类似的 API,并将您的数据存储在数据库中。由于您使用的是 MVC 模式,您似乎已经有了模型,并且可能需要控制器,所以我们现在忽略视图。

    由于您对在哪里创建 CRUD 逻辑感兴趣,我将使用 Web API 场景。根据应用程序,您有许多选项。您可以实现 CQRS 模式并为命令设置单独的类,例如数据库的插入和更新,以及检索数据的查询类。您可以使用 Entity Framework、Dapper 或您喜欢的任何其他工具来执行此操作。存储库模式是另一种选择,如果您在 Google 上进行搜索,您会找到大量 Microsoft 示例。

    在控制器中,您可以有 4 个操作:GetThing、PostThing;放东西;删除事物。注意这里的命名约定是 HttpMethodEntity。通过这些操作,您可以验证数据并调用数​​据层的方法来执行 CRUD 操作。

    一些需要研究的主题,从这些你应该开始了解基础知识以及如何解决你的问题。

    1. 存储库模式
    2. NET Core Web API
    3. CQRS
    4. 小巧玲珑
    5. 实体框架

    【讨论】:

    • 1:感谢您的全面回答!我是否正确理解您是否像我一样建议使用单独的类并通过这些单独的类与 EF Core 模型(它们也是类)进行交互?唯一的区别是您建议使用 CQRS 模式而不是 CRUD,对吗?它不是用于 Web API,我还没有开发任何东西。只是在想我应该如何开发它。但是我打算在应用程序中使用外部 api,如果这会有所不同,我不这么认为。
    • 2:因此,通过这种方法,EF Core 模型是使用 CRUD/CQRS 类封装的,我的意思是,您正在通过这些 CRUD/CQRS 类与数据库/ef-core_model 进行交互,而不是在您应该使用它的每个其他地方直接与数据库/模型进行交互。因此,通过这种方法,您也可以减少重复代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多