我有这样的请求:
ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing>
人有以下字段
[Ignore]
Public string Label { get { return FirstName + LastName; }
在我的结果中,我有以下
public int Id;
public string Label
但是,如果我向字段添加Ignore
属性,则会被忽略。因此,每当我执行所有操作时,返回的唯一内容就是ID列表,而在QueryResponse中,Label
始终为空,如果我返回Person
而不是Result
我得到一个完全充满的回应。
所以问题是,我如何确保OrmLite不在数据库中搜索标签,而是在我的自定义返回对象中设置标签。
答案 0 :(得分:1)
mythz向我解释了这样一个事实:如果它没有映射到你的ormlite数据库,它不会在以后映射到你生成的DTO,我会快速解决这个问题。而不是立即在以下行返回我自己的响应:
ARequest : QueryBase<Person, Result>, IJoin<Person, OtherThing>
我刚刚返回了person对象:
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
这样我确保标签上填充了firstname和lastname,但是没有重新设计我的结果DTO,所以我可以保持它非常通用。
答案 1 :(得分:0)
不确定我是否理解您要做的事情,但如果您只想返回Label
,您应该能够将其添加到返回的DTO中,例如:
public class Result
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Label { get { return FirstName + LastName } }
}