2

我目前正在使用 Blazor 3.2 preview 3 开发一个 Web 应用程序。我正在使用 WebAssembly 版本和 Identity。我的应用程序由 3 部分组成:客户端、服务器和共享。(就像基本模板一样)。

我的模型类存储在共享部分。但是,Users 的模型类存储在 Server 文件夹中。

我想在我的一个模型中使用(存储在共享项目中):

 public virtual ApplicationUser User { get; set; }

这是不可能的,因为共享项目无权访问服务器项目。

我是否必须将所有模型类放在服务器中并在共享部分中使用 DTO?

而是将我的所有课程都放在 Shared 文件夹中(包括 ApplicationUsers)?

最佳做法是什么?

4

1 回答 1

1

这是不可能的,因为共享项目无权访问服务器项目。

这不是必需的:您可以将 ApplicationUser 移动到 Shared 并将 Microsoft.Extensions.Identity.Stores nuget 包添加到 Shared。那就是IdentityUser定义的地方。但是,这不是最佳做法。除其他问题外,它会大大增加您的客户端应用程序的大小。

我是否必须将所有模型类放在服务器中并在共享部分中使用 DTO?

这是首选模式,当然对于更大的项目。对于一些小的东西,模型类和 DTO 之间的区别有时会变得模糊。但是因为 IdentityUser 引入了一些依赖项,并且包含了您在客户端上不需要或不需要的字段,所以创建 ApplicationUserDto 总是值得的。

于 2020-04-05T20:17:15.243 回答