ViewModels、CQRS和实体我正在尝试了解如何使用ViewModels、命令和数据库实体目前我认为这之间有很多手动映射,我不确定如果我应该在有很多属性(如10-15)时使用类似AutoMapper工具的东西来映射ViewModel命令实体)。以这个例子为例(用记事本快速编写,可能无法编译-在我的实际应用程序中我使用依赖注入和IoC):publicclassStudent{publicintId{get;放;}公共字符串名称{得到;放;}publicstringAnoterProperty{get;放;}publicstringAnoterProperty2{get;放;}publicstringAnoterProperty3{get;放;}publicstringAnoterProperty4{get;}publicStudentTypeStudentType{get;放;}//一对多}publicclassCreateStudentViewModel{publicstringName{get;放;}publicDropDownListStudentTypes{get;放;}}publicclassDropDownList{}publicIListItems{get;放;}}publicclassCreateStudent{publicstringName{get;放;}publicintStudentTypeId{得到;放;}}publicclassHandleCreateStudentCommand{publicvoidExecute(CreateStudentcommand){varstudent=newStudent{Name=command.Name,StudentTypeId=command.StudentTypeId};//添加到数据库}}publicclassStudentController{publicActionResultCreate(){varmodel=newCreateStudentViewModel{StudentTypes=newDropDownList{Items=//从数据库中获取学生类型}};返回视图(模型);}publicActionResultCreate(CreateStudentViewModelmodel){varcommand=newCreateStudent{Name=model.Name,StudentTypeId=Convert.ToInt32(model.Items.SelectedValue);};varcommandHandler=newHandleCreateStudentCommand();commandHandler.Execute(命令);在这里让我担心的是,我已经在不同部分之间做了很多手动映射这个例子只包含几个属性。我特别担心可能的更新命令可能包含学生实体的所有可能属性。是否有一个巧妙的解决方案,或者我应该使用AutoMapper并从ViewModel命令和命令实体进行映射?处理较少类和映射/预测/转换的一种可能方法:对于应用程序的WRITE-SIDE中使用的所有视图(允许用户提交表单的视图),将命令作为其模型(视图模型)。也就是说,您可以:[HttpPost]publicActionResultCreate(CreateStudentcommand){commandHandler.Execute(command);}至于get操作,我看到你必须填充一个下拉列表...[HttpGet]publicActionResultCreate(){//varmodel=以某种方式创建视图模型returnView(model);现在,对于后一个代码片段中的模型,您可能有这些选项(可能还有其他选项):请注意,不需要向命令对象“Command”添加后缀。只要给它起一个意思是doSomething的名字——一个动词短语(动词+宾语)——它应该没问题。最后,一些命令对象确实是某些视图的模型-没有必要为那些视图定义另一个视图模型,然后有很多重复等。另外,你可能会发现这些有趣的:以上是C#分享的所有内容学习教程:ViewModels、CQRS和实体。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
