c# - ApiController,Viewmodel和DTO的设计

标签 c# entity-framework mvvm architecture

我正在计划一个“通用的”客户端-服务器架构。当前结构如下:

服务器

  • Asp.Net WebApp(托管在本地或以天蓝色)
  • EntityFrameworkCore数据层
  • 带有每个EF-Model Controller 的
  • WebApi,发送平面DTO

  • 客户
  • ApiClient,接收DTO
  • 每个 View (MVVM)的
  • Viewmodel,可与多个不同的DTO一起使用。实体之间的关系需要通过实体ID手动连接。

  • 如许多教程所示,这就是方法。但是我不确定某些事情。
  • 从ViewModel调用Api时,我需要多次调用(每个我需要的实体一次)。只为我的ViewModel创建一个ApiController一次调用就可以给我提供所需的一切,这会更快吗?我猜这与常见的模式背道而驰,但是有什么反对呢?整个客户端逻辑在服务器上执行,并且客户端保持整洁。
  • Entity Framework 的舒适Linq语法在客户端不可用。是否有包装所有“接收到并创建关系”的东西的可比较的东西?
  • 最佳答案

    我认为您可以抽象一些在互联网上阅读的关于架构的想法,好的架构实际上是可以更有效地解决您的问题的架构。
    我的建议是不要坚持使用这些架构,放开胸怀,跳出框框思考。您可以创建一个API Controller ,也可以只创建一个代理类(http://www.dofactory.com/net/proxy-design-pattern)来抽象这些api调用。

    换句话说,您可以只在api端加入数据。没有必要使用api返回与唯一实体相关的数据。您可以只创建另一个类,然后按需要的方式对数据建模。

    The comfortable Linq-syntax of entity-framework is not useable on the client side. Is there a comparable thing wrapping all the "receive-dto-and-create-relations" stuff?



    好了,您始终可以使用lambda表达式查询数据,当您使用.net集合时,它非常类似于Entity-framework linq,唯一的区别是您不是直接从数据库中操作数据,而只是在内存数据。

    关于c# - ApiController,Viewmodel和DTO的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43779462/

    相关文章:

    c# - VS中构建和发布的区别?

    c# - 如何从表单中隐藏外键值

    c# - 在文本框中发生任何更改时立即更改按钮的启用状态?

    Android ViewModel 附加参数

    c# - 如何使用 NLog 配置 API 将 NULL 写入数据库中的列?

    c# - Entity Framework 代码第一个链接表中违反 PRIMARY KEY 约束

    c# - Entity Framework - 无法更新 EntitySet 二进制数据

    wpf - 根据另一个下拉列表中的选择限制一个下拉列表中的项目

    C# 字典相当于 Python 的 get() 方法

    c# - 从一个 Entity Framework ExecuteStoreQuery 请求读取多个表。