我是否必须真正创建多个模型?

问题描述 投票:0回答:1

历史上是MS堆栈开发人员。

我已承诺重新装备到以下堆栈

 angular -> ms web.api2 -> C# business objects -> sql server

很老,我根据需求开发数据库,​​并使用Codesmith生成业务逻辑层。 (是的,我听说过实体框架。甚至尝试过一次)。

我拥抱Angular和Web API 2

我发现Angular希望我在前端编写模型。这似乎只是一个数据结构,我什至无法添加辅助方法。

因此,我也经常编写带有辅助方法的类,该类采用模型的实例。有点丑陋,但确实将结构和逻辑结合在一起。

我发现Web API2希望我编写一个模型。这又似乎只是一个数据结构。我正在探索动态数据类型,但是实际上这并不能给我带来多少好处。而不是编写类,而是编写映射函数。

问题是这个:

是否有办法让每个类的3个以上的副本散布在整个堆栈中?Codesmith是一个非常强大的代码生成器...它可以生成多个文件...但是...

如果它只有几个数据成员和3个地方,我可以复制粘贴编辑并完成它。

在我看来,现在致力于在3个不同环境中保持数据结构同步正在为很多工作做好准备。

我花了近15年的时间试图将尽可能多的代码推送到可继承类的框架中,以使事情保持干燥。

我想念什么吗?有什么建议的模式吗?

[我知道这不是为SO量身定制的问题,但这是所有聪明人都在这里购物的地方。如果您感到荣幸的话,请拒绝我的投票。]

c# sql-server angular asp.net-core-webapi dry
1个回答
1
投票

对CodeSmith生成类的方式并不十分熟悉,但是如果它们只是可以很好地序列化的普通的CLR对象,则可以让WebApi将它们直接返回到Angular应用程序。有一些纯粹主义者对此不满意,但是根据具体应用,可能会有理由。

然后,在Angular的世界中,您再次有一些选择,这取决于您的要求/合理性以及您的应用-同样,纯粹主义者肯定会不赞成其中某些选择。

  1. 创建与来自服务器的内容相匹配的类(更正确的方法)
  2. 将所有内容视为“任意”,失去类型安全性,仅在需要时访问属性,即不要创建模型。 (显然不正确的方法)
  3. 找到了一个代码生成工具,它将探索API端点以确定它们返回什么,并为您生成您的打字稿类。

个人,使用实体框架,我(手动)为数据库创建了我的POCO,有一个“视图” / DTO类,然后WebAPI将其发送回客户端,并在Typescript中定义了对象,但是我是控制怪胎,并且不喜欢生成的代码。

© www.soinside.com 2019 - 2024. All rights reserved.