1

我是 PetaPoco 的新手,最初我很喜欢它,但后来碰上了我根本不知道如何搜索的墙。我有一个对象需要在其属性之一中设置一个属性,即 Job.Min.BaseValue。该数据的来源是“min_mb”。所以基本上我的对象不是源表的直接映射

public class Usage
{
   public Decimal BaseValue {get;set;}
   public Decimal BaseScale {get;set;}
   public Decimal BaseUnit {get;set;} 
}

[PetaPoco.TableName("data")]
[PetaPoco.PrimaryKey("date, client_name")]
[PetaPoco.ExplicitColumns] 
public class Job
{
   [PetaPoco.Column("date")]
   public DateTime Date {get;set;}
   [PetaPoco.Column("client_name")]
   public String ClientName {get;set;}

   public Usage Min {get;set;}

   public CommvaultJob() { Min = new Usage() { BaseScale=1024, BaseUnit="MB" }; }
}
4

2 回答 2

1

我认为当您调用 Fetch 或 Query 时,您只是缺少额外的类型。这对我有用:

调用 PetaPoco :

var allData = _db.Fetch<TestJobPoco,Usage>("select * from dataTEST");
return View( allData);

波科斯:

[PetaPoco.ExplicitColumns]
public class Usage
{
   public Usage()
   {
       BaseScale=1024;
       BaseUnit="MB";
   }

   [PetaPoco.Column("base_value")]
   public Decimal BaseValue {get;set;}

   [PetaPoco.Ignore]
   public Decimal BaseScale {get;set;}

   [PetaPoco.Ignore]
   public string BaseUnit {get;set;} 
}

[PetaPoco.TableName("dataTEST")]
[PetaPoco.PrimaryKey("id")]
[PetaPoco.ExplicitColumns]
public class TestJobPoco
{
   [PetaPoco.Column("id")]
   public int Id {get;set;}

   [PetaPoco.Column("date")]
   public DateTime Date {get;set;}

   [PetaPoco.Column("client_name")]
   public String ClientName {get;set;}

   public Usage Min {get;set;}

    public TestJobPoco()
    {
        //Min = new Usage() { BaseScale=1024, BaseUnit="MB" };
    }
}

我的测试数据库有一个 id、date、client_name 和 base_value 列。主键是 id 所以它与你的略有不同,但这不应该改变 poco 映射发生的方式。

于 2012-11-10T11:41:45.267 回答
0

如果您的对象没有与表结构映射,那么 ORM 也无济于事。

您将需要手动进行映射或创建新的影子属性来复制其他字段的值,但是这种增加的复杂性会破坏 ORM 的目的。

于 2012-11-09T02:32:04.033 回答