C# Blazor WASM和EF Core:数据模型代码放在哪里?

C# Blazor WASM和EF Core:数据模型代码放在哪里?,c#,entity-framework,blazor,C#,Entity Framework,Blazor,使用Blazor WebAssembly时,默认情况下会创建三个项目—客户端、服务器和共享。 对于定义EF核心数据模型的代码,哪个项目是最佳选择 如果我把它放在服务器上,我必须在客户机项目中创建它的客户机对应项,这会产生冗余代码 如果我将其置于Shared and use中,客户机将过渡地依赖于共享项目中实体上System.ComponentModel.DataAnnotations命名空间中的EF Coreuse属性。这些在UI和客户端验证中很有用,不会引入对EF的依赖 然后在服务器项目中使

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

  • 如果我把它放在服务器上,我必须在客户机项目中创建它的客户机对应项,这会产生冗余代码

  • 如果我将其置于Shared and use中,客户机将过渡地依赖于共享项目中实体上System.ComponentModel.DataAnnotations命名空间中的EF Coreuse属性。这些在UI和客户端验证中很有用,不会引入对EF的依赖

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

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

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


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

    实际上,并非所有您想要共享的数据模型。在这种情况下,您将在两个不同的位置安装模型。虽然对数据模型使用共享文件夹似乎很有吸引力,但我发现它只对POC有用。数据注释是有限的。访问共享dll中的模型生成器将导致客户端膨胀。您真的希望数据库设计在交付给客户端的dll中吗?除非您的应用程序很小并且不打算增长,否则您应该使用DTO。