繁体   English   中英

我真的必须创建多个模型吗?

[英]Do I have to really create multiple models?

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

我已承诺对以下堆栈进行重组

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

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

当我拥抱 Angular 和 web API 2

我发现Angular要我在前端写一个model。 这似乎只是一个数据结构,我什至无法为其添加辅助方法

因此,我也经常使用辅助方法编写 class,该方法采用 model 的实例。 有点丑,但它确实结合了结构和逻辑。

我发现 Web API2 要我写一个 model。 这似乎又只是一个数据结构。 我正在探索动态数据类型,但实际上这并没有给我太多帮助。 我没有写 class,而是写了一个映射 function。

问题是这样的:

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

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

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

在过去的 15 年中,我一直在尝试将尽可能多的代码放入可继承类的框架中,这样我就可以保持 DRY。

我错过了什么吗? 有什么可以推荐的模式吗?

[我知道这不是为 SO 量身定做的问题,但它是所有聪明人购物的地方。 如果您觉得有必要这样做,请投票给我。]

不完全熟悉 CodeSmith 如何生成它的类,但如果它们只是可以很好地序列化的普通旧 CLR 对象,您可以让 WebApi 将它们直接返回到您的 Angular 应用程序。 有些纯粹主义者会对此不以为然,但根据应用程序,可能会有理由。

然后,在 Angular 的世界中,您有几个选项,再次取决于您的要求/理由和您的应用程序 - 再一次,纯粹主义者肯定会不赞成某些选项。

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

就个人而言,使用实体框架,我(手动)创建用于数据库交互的 POCO,有一个“视图”/DTO class,然后 WebAPI 将发送回客户端,以及 Z9327DAFFB33041504F28Z 中 object 的定义,3 但我是 amcc99 一个控制怪胎,并且不喜欢生成的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM