我正在使用 Entity Framework 6.0 构建 C# Web API。我有一个最简单的用户类,它有 3 个属性,我将它们通过 SQL 持久保存到具有 3 个相应列的用户表中,其中 UserID 是其主键。
public partial class User
{
public string UserID {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
}
我想动态向 Web API 添加两个仅输出属性,我不关心将其存储在数据库中。我使用这些属性向消费客户端传达不属于用户类的“状态”和“消息”信息。状态 = 正常|错误|警告。消息可以是 Web API 需要传回调用客户端的任何消息。
我的问题是:在发回 Web API 响应时动态添加这两个属性而不修改 SQL 上的底层用户表的最简单方法是什么?我知道我可以将这两个作为虚拟列添加到用户表中。当我不需要 SQL 端时,我不想在 SQL 端承担这些开销。
我会采用更通用的方法:
public class MyResponse<T>
{
public T Data {get;set;}
public Status ResponseStatus{get;set;}
public string Message{get;set;}
}
这样您就可以以相同的方式处理所有模型/数据。
UPDATE
[AllowAnonymous]
[RoutePrefix("api/home")]
public class HomeController : ApiController
{
[HttpGet]
[Route("ok")]
public MyResponse<MyUser> OK()
{
MyUser m = new MyUser();
var r = MyResponse<MyUser>.Success(m);
return r;
}
[Route("nok")]
[HttpGet]
public MyResponse<MyUser> NOK()
{
var r = MyResponse<MyUser>.Error("something went terribly wrong");
return r;
}
}
public class MyResponse<T>
{
public T Data { get; set; }
public Status ResponseStatus { get; set; }
public string Message { get; set; }
private MyResponse() { }
public static MyResponse<T> Success(T data)
{
return new MyResponse<T> { Data = data, ResponseStatus = Status.Success };
}
public static MyResponse<T> Error(string message)
{
return new MyResponse<T> { ResponseStatus = Status.Error, Message = message };
}
}
public class MyUser
{
public int Id { get; set; }
public string Name { get; set; }
}
public enum Status
{
Unknown = 0,
Success = 1,
Error
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)