2012-11-09 1 views
1

저는 PetaPoco를 처음 접했고 처음에는 그것을 좋아했지만 벽을 치면 검색 방법을 알 수 없습니다. 속성 중 하나, 즉 Job.Min.BaseValue 내에서 속성을 설정해야하는 개체가 있습니다. 이 데이터의 소스는 "min_mb"입니다. 당신의 객체가 테이블 구조와 매핑되지 않는 경우, ORM은 큰 도움이되지 수속성 내의 PetaPoco 매핑 속성

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" }; } 
} 
+1

지도의 구조는 무엇입니까? 다른 테이블 있니? –

+0

아니요 테이블이 편평하고 열이 {client_name, date, min_mb}이고 조인이 없습니다 –

답변

0

그래서 기본적으로 내 목적은 소스 테이블의 직접 매핑되지 않습니다.

매핑을 수동으로 수행해야하거나 다른 필드의 값을 복사하는 새 그림자 속성을 만들지 만,이 복잡성이 추가되면 ORM의 목적을 무효화합니다.

+0

구체적이어야합니다. 데이터는 직접 맵핑을 수행하지만 단순 유형 (int, string 등)에는 맵핑하지 않습니다. 속성을 채우기 위해 열 또는 열의 모음을 사용할 수 있기를 원합니다. 즉 .NET에서 Unit 클래스를 사용하는 경우 Unit Type과 Value가 데이터베이스에 두 개의 개별 열로 저장 될 수 있습니다. 이 문제를 처리 할 수있는 방법이 있습니까? –

+0

이것은 일반적으로'Unit' 테이블을 가지고 있으면 잘 작동하므로 오브젝트를 매핑 할 수 있습니다 –

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, 날짜, 클라이언트 _ 및 BASE_VALUE 열이 있습니다. 프라이 머리 키는 이드이므로 당신과는 약간 다르지만 이것은 포코 매핑이 일어나는 방식을 변경해서는 안됩니다.