带有 EF Core 的 Blazor WASM:在哪里放置数据模型代码?

Dra*_*ex_ 7 c# entity-framework blazor

使用 Blazor WebAssembly 时,默认情况下会创建三个项目 - 客户端、服务器和共享。哪个项目是定义 EF Core 数据模型的代码的最佳选择?

  • 如果我把它放在服务器中,我必须在客户端项目中创建它的客户端对应项,这会创建冗余代码
  • 如果我将其放入共享并使用数据注释,则客户端将过渡依赖于 EF Core
  • 如果我将其放入 Shared 并使用Fluent API,我将必须检查多个文件才能理解甚至单个属性(例如,此属性是必需的吗?它的最大长度是多少?)

看起来我正在三害相权取其轻,这似乎是 Fluent API。 还有哪些方面是我没有考虑到的?

Hen*_*man 8

您将 DTO(数据传输对象)放入共享项目中。这是 Blazor 的主要优势之一。

您可以使用模型实体作为 DTO,但我只会考虑将其用于(非常)小的项目。然后EF(DbContext和Fluent API)仍然只需要在服务器上。不要将其添加到共享项目中。

对于较大的项目,请使用单独的 DTO 并在服务器 API 中进行映射。


Dav*_*oft 5

在共享项目中的实体上使用 System.ComponentModel.DataAnnotations 命名空间中的属性。这些在 UI 和客户端验证中很有用,并且不会引入对 EF 的依赖。

然后使用服务器项目中的 Fluent API 进行任何其他 EF 配置。

  • 除非您的应用程序很小并且不打算增长,否则您应该使用 DTO。 (2认同)