带注释的忽略字段在服务堆栈响应中被忽略
Annotated Ignore field get's ignored in servicestack reponse
我有这样的请求:
ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing>
人有以下字段
[Ignore]
Public string Label { get { return FirstName + LastName; }
在我的结果中我有以下内容
public int Id;
public string Label
但是,如果我向字段添加 Ignore
属性,它会被忽略。因此,每当我执行所有操作时,唯一 returned 是一个 id 列表,并且在 QueryResponse 中 Label
总是空的,但是如果我 return 一个 Person
而不是 Result
我得到了一个完整的回复。
所以问题是,我如何确保 OrmLite 不在数据库中搜索标签,而是在我的自定义 return 对象中设置标签。
不确定我是否理解你想要做什么,但如果你只是想 return Label
你应该可以将它添加到 return编辑 DTO,例如:
public class Result
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Label { get { return FirstName + LastName } }
}
在 mythz 向我解释了如果它不映射到您的 ormlite 数据库,它以后就不会映射到您生成的 DTO 的事实之后,我建立了一个快速的解决方法。而不是在以下行中立即返回我自己的响应 dto:
ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing>
我刚刚返回了人物对象:
ARequest : QueryBase<Person>, IJoin<Person, OtherThing>
然后在我的服务中,我按照以下几行编写了一个简单的映射器:
QueryResponse<Result> response = result.ConvertTo<QueryResponse<Result>>();
response.Results = new List<Result>();
foreach (Person p in result.Results)
{
response.Results.Add(new Result{ Id = p.EmployeeId, Label = (p.FirstName + " " + p.LastName) });
}
return response
通过这种方式,我确保标签中填满了名字和姓氏,但不必重新设计我的结果 DTO,因此我可以使其非常通用。
我有这样的请求:
ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing>
人有以下字段
[Ignore]
Public string Label { get { return FirstName + LastName; }
在我的结果中我有以下内容
public int Id;
public string Label
但是,如果我向字段添加 Ignore
属性,它会被忽略。因此,每当我执行所有操作时,唯一 returned 是一个 id 列表,并且在 QueryResponse 中 Label
总是空的,但是如果我 return 一个 Person
而不是 Result
我得到了一个完整的回复。
所以问题是,我如何确保 OrmLite 不在数据库中搜索标签,而是在我的自定义 return 对象中设置标签。
不确定我是否理解你想要做什么,但如果你只是想 return Label
你应该可以将它添加到 return编辑 DTO,例如:
public class Result
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Label { get { return FirstName + LastName } }
}
在 mythz 向我解释了如果它不映射到您的 ormlite 数据库,它以后就不会映射到您生成的 DTO 的事实之后,我建立了一个快速的解决方法。而不是在以下行中立即返回我自己的响应 dto:
ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing>
我刚刚返回了人物对象:
ARequest : QueryBase<Person>, IJoin<Person, OtherThing>
然后在我的服务中,我按照以下几行编写了一个简单的映射器:
QueryResponse<Result> response = result.ConvertTo<QueryResponse<Result>>();
response.Results = new List<Result>();
foreach (Person p in result.Results)
{
response.Results.Add(new Result{ Id = p.EmployeeId, Label = (p.FirstName + " " + p.LastName) });
}
return response
通过这种方式,我确保标签中填满了名字和姓氏,但不必重新设计我的结果 DTO,因此我可以使其非常通用。