如何使用NPoco在同一个表中保存嵌套对象?

时间:2014-08-10 21:48:44

标签: c# npoco

我有一个这样的课程:

public class AuthEntity 
{
  public int Id { get; set; }

  public AuthResource Resource { get; set; }

  public int ActionId { get; set; }
}

AuthResource是:

public class AuthResource 
{
  public long ResourceId { get; private set; }

  public int ResourceType { get; private set; }
}

存储数据的表格包含以下字段:

  • 编号
  • RESOURCEID
  • 的ResourceType
  • ActionId

我可以很好地阅读AuthEntity(包括资源属性),但我不知道如何插入AuthEntity记录。 NPoco说没有资源字段。如何将嵌套对象字段映射到表字段?

由于

2 个答案:

答案 0 :(得分:2)

NPoco文档说您可以使用映射到嵌套对象来执行此操作。

db.Fetch<AuthEntity, AuthResource>("select query to db")

此外,您还必须将AuthResource更改为

public class AuthResource
{
     public long ResourceId { get; set; }
     public int ResourceType { get; set; }
}

答案 1 :(得分:1)

您的表结构表明ResourceId和ResourceType是AuthEntity的成员,并且不是单独的类。如果你想让AuthResource作为一个单独的类,你可以让AuthEntity从AuthResource继承,例如。

public class AuthResource
{
     public long ResourceId { get; private set; }
     public int ResourceType { get; private set; }
}

public class AuthEntity : AuthResource
{
    public int Id { get; set; }   
    public int ActionId { get; set; }
}

以这种方式AuthEntity将包含您希望它拥有的ResourceId和ResourceType值,并且AuthResource可以重用于实现相同结构的其他类,在我看来,这是您正在寻找的