如果可能的话,我想用一个查询填充 CharacterViewModel 列表,但我不确定如何,也不确定 PetaPoco 是否可以做这样的事情。这是对象和查询的样子:
public class CharacterViewModel
{
public Character Character { get; set; }
public Entity Entity { get; set; }
public Faction Faction { get; set; }
}
var characters = db.Query<CharacterViewModel>(
@"SELECT c.*,e.*,f.*
FROM [Character] c
INNER JOIN [Entity] e ON e.Id = c.EntityId
INNER JOIN [Faction] f ON f.Id = e.FactionId
WHERE c.UserId = @0", 1)
我需要以某种方式告诉 PetaPoco 将每个 JOIN 映射到 View 模型中的相应 POCO。这是可能的还是我的做法有误?
最佳答案
如下修改您的 POCO:
public class Faction
{
// Other properties
[PetaPoco.ResultColumn]
public Entity Entity { get; set; }
}
public class Entity
{
// Other properties
[PetaPoco.ResultColumn]
public Character Character{ get; set; }
}
public class Character
{
// Properties of character object
}
按如下方式修改您的查询语法:
var sql = Sql.Builder
.Append("SELECT c.*,e.*,f.*")
.Append("FROM [Character] c")
.Append("INNER JOIN [Entity] e ON e.Id = c.EntityId")
.Append("INNER JOIN [Faction] f ON f.Id = e.FactionId")
.Append("WHERE c.UserId = @0", 1)");
var characters = db.Query<Character, Entity, Faction, Faction>(
(c, e, f) => { f.Entity = e; e.Character = c; return f;}, sql);
这应该返回 Faction 对象的对象图。注意第四个参数(Faction)是集合中item的返回类型。
关于c# - PetaPoco 能否填充一个包含多个 POCO 的 View 模型列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089931/