2012-03-12 4 views
1

나는 다음 클래스가 속성을 무시 :PetaPoco 및

public class Foo 
{ 
    public int Id { get; set; } 
    ... 
    public Boo Boo1 { get; set; } 
    public Boo Boo2 { get; set; } 
} 

내가 Boo1Boo2 속성을 제외 할하지만 PetaPoco.Ignore 속성과 그 속성을 장식하지 않으려합니다. 순수한 POCO 개체를 갖고 싶습니다. 코드에서 Ignore 명령을 실행할 수 있습니까? 아니면 쿼리/저장 프로 시저를 만들고 모든 필드를 수동으로 매핑해야합니까?

도움이 될 것입니다.

답변

1

PetaPoco는 속성을 사용하는 것보다 필드/속성을 무시해야한다는 말은 다른 방식으로는 불가능합니다. 몇 개의 멤버를 무시하거나 클래스의 대다수를 매핑하지 않으면 클래스에 대한 명시적인 열 매핑을 지정하고 매핑 할 매핑을 꾸밀 수 있습니다. 나는 "순수한"POCO에 ORM 특정 cruft를 추가하는 것을 주저하고 있지만 유감스럽게도이 정보는 어딘가에 있어야하며 PetaPoco는 매핑 파일 (또는 대부분의 구성을 사용하지 않기 때문에)이 클래스는 어디로 간다.

매핑 할 대상이 될 DTO/DAO를 만든 다음 도메인 클래스와 해당 DTO간에 변환 할 암시 적 또는 명시 적 연산자를 만듭니다. 그러면 DTO는 포함시키지 않으려는 필드를 단순히 가질 수 없습니다. 이 두 클래스는 POCO (연산자 메서드에 대한 사용자의 감정에 따라 다름)를 유지하며 쿼리 결과를 도메인 클래스에 캐스팅하는 비교적 간단한 단계 만 추가하면됩니다. 여기 내 지점에서

+0

내 답변에서 언급 한 것처럼 유창하게 맵핑하는 것을 사용할 수 있습니다. – Schotime

2

: https://github.com/schotime/PetaPoco

내가 여기에 기술 한 것처럼 당신은 유창 모델을 설명 할 수 있습니다 http://schotime.net/blog/index.php/2011/05/16/fluent-petapoco-external-mappings/을하고 여기처럼 규칙 기반 매핑 사용 : 이것은위한 좋은 장소입니다 http://schotime.net/blog/index.php/2012/02/13/petapoco-convention-based-fluent-mapping/

+0

Schotime/PetaPoco에 PetaPoco 버전이 있고 TopTenSoftware/PetaPoco에 다른 버전이 있는지 궁금합니다. 어느 것이 사용하기 좋을까요? – Samuel

+0

내 버전에는 더 많은 기능과 버그 수정이 포함되어 있습니다. – Schotime

0

을 익명 유형. 수업이 중첩되는 경우는 피타가 될 수 있지만, foo는

그것은 그냥 조금 더 많은 작업
public void InsertFoo(Foo f) 
{ 
    var db = new Database("connection");   
    var petaPocoFooObj = new {f.Id} 
    db.Insert("FooTable", "FooId", petaPocoFooObj); 
} 

절약을위한 방법에

.

관련 문제