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



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

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

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

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

当我拥抱 Angular 和 Web API 2 时

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

所以我也经常编写一个带有辅助方法的类,该类采用模型的实例。有点丑,但它确实结合了结构和逻辑。

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

问题是这样的:

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

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

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

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

我错过了什么吗?是否有任何可以建议的模式?

[我知道这不是一个为SO量身定做的问题,但它是所有聪明人购物的地方。如果你觉得很荣幸,请投反对票。

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

然后,在 Angular 的世界里,你有几个选择,同样,这取决于你的要求/理由和你的应用程序 - 同样,纯粹主义者肯定会对一些选项不屑一顾。

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

就个人而言,使用实体框架,我(手动(为数据库交互创建了我的 POCO,有一个 WebAPI 然后将发送回客户端的"视图"/DTO 类,以及在 Typescript 中对象的定义,但我是一个控制狂,不喜欢生成的代码。

最新更新