我有一个实体类型:
public class Log
{
public int Id { get; set; }
public string Action { get; set; }
public string Message { get; set; }
}
我的索引:
public class LogIndex : AbstractIndexCreationTask<Log>
{
public LogIndex()
{
Map = xs => from x in xs
select new
{
x.Id,
x.Action,
x.Message
};
}
}
然后我可以使用它们来存储日志,我可以使用context.Query<Log, LogIndex>().Where(x => x.Action== "GetString").ToList()
来获取日志。
然后我尝试使用命令查询我的日志:
QueryResult queryResult = context.Advanced.DocumentStore.DatabaseCommands.Query("LogIndex", new IndexQuery
{
Query = "Action:(GetString)"
});
Log log = queryResult.Results.First().ToObject<Log>();
我的问题是:
ToObject<Log>()
返回的日志会丢失其ID属性的值(为0)。但它的行动和消息属性的价值不会丢失..
使用RavenJObject.ToObject<T>()
正确的方式获取查询结果(实体)?如果是,我的代码有什么问题?如果不是,这是正确的方法吗?
答案 0 :(得分:1)
不,这不是正确的方法。 首先,您使用的是非常低级的API,并且应该使用会话。
如果您要使用会话,则会正确设置ID。