我目前正在使用Blazor 3.2 Preview 3开发Web应用程序。我正在使用WebAssembly版本和Identity。 我的应用程序包括3个部分:客户端,服务器和共享。 (就像基本模板一样)。
我的模型类存储在“共享”部分中。但是,“用户”的模型类存储在“服务器”文件夹中。
我想使用一种模型(存储在Shared项目中):
public virtual ApplicationUser User { get; set; }
这是不可能的,因为共享项目无权访问服务器项目。
我是否必须将所有模型类放入服务器,并在共享部分中使用DTO?
是将我所有的类放到Shared文件夹中(包括ApplicationUsers)吗?
什么是最佳做法?
答案 0 :(得分:1)
这是不可能的,因为共享项目无权访问服务器项目。
这不是必需的:您可以将ApplicationUser移到Shared并将Microsoft.Extensions.Identity.Stores nuget包添加到Shared。这就是定义IdentityUser
的地方。但是,这不是最佳实践。除其他问题外,这还会大大增加您的客户端应用程序的大小。
我是否必须将所有模型类放在服务器中,并在共享部分中使用DTO?
这是首选模式,当然在更大的项目之前。对于某些小问题,模型类和DTO之间的区别有时会变得模糊。但是,由于IdentityUser带来了一些依赖关系,并且包含了客户端上不需要或不需要的字段,因此创建ApplicationUserDto总是值得的。