我如何将未存储在数据库中的属性添加到我的WebAPI响应?我正在使用EntityFramework6.0构建C#WebAPI。我有最简单的User类,它有3个属性,我在User表中使用SQL,它有3个对应的列,其中UserID是它的主键。publicpartialclassUser{publicstringUserID{get;设置;}公共字符串名字{get;设置;}公共字符串姓氏{get;set;}}我想在WebAPI中添加两个仅输出属性,我不想将这些属性存储在我的数据库中。我使用这些属性与不属于User类的消费客户端“状态”和“消息”信息进行通信。状态=好的|错误|警告。消息将是WebAPI与调用客户端通信所需的任何内容。我的问题是:在不修改SQL上的基础用户表的情况下将响应发送回WebAPI时动态添加这两个属性的最简单方法是什么?我知道我可以将这两个作为虚拟列添加到用户表中。当我不需要时,我不想在SQL端带来开销。我会采用更通用的方法:publicclassMyResponse{publicTData{get;set;}publicStatusResponseStatus{get;set;}publicstringMessage{get;set;}}所以你可以用同样的方式处理模型/数据。更新[AllowAnonymous][RoutePrefix("api/home")]publicclassHomeController:ApiController{[HttpGet][Route("ok")]publicMyResponseOK(){MyUserm=newMyUser();varr=我的回复。成功(米);返回r;}[Route("nok")][HttpGet]publicMyResponseNOK(){varr=MyResponse.Error("发生了严重错误");返回r;}}publicclassMyResponse{}publicStatusResponseStatus{get;放;}公共字符串消息{得到;放;}privateMyResponse(){}publicstaticMyResponseSuccess(Tdata){returnnewMyResponse{Data=data,ResponseStatus=Status.Success};}publicstaticMyResponseError(stringmessage){returnnewMyResponse{ResponseStatus=Status.Error,Message=message};}}publicclassMyUser{publicintId{get;放;}公共字符串名称{得到;放;}}publicenumStatus{Unknown=0,Success=1,Error}理想情况下,您应该在模型中创建一个数据传输对象(DTO)类,其中包含您需要的所有属性,然后使用映射器将用户映射到DTO公共类用户数据o{公共字符串用户ID{get;设置;}公共字符串名字{get;设置;}公共字符串姓氏{get;设置;}公共字符串消息{get;设置;}公共字符串状态{get;set;}}然后在你的操作中[ResponseType(typeof(UserDto))]publicIHttpActionResultUser(stringuserId){//从数据库中检索用户varuserDto=Mapper.Map(dbUser);if(condition){userDto.Message="消息";userDto.Status="状态";}返回确定(userDto);然后,您可以从nuget安装Automapper并将其配置为为您执行映射添加属性到WebAPI响应?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
