2012-03-12 14 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のように見えるのは、フィールド/プロパティを属性を使用するよりも無視しなければならないという言い方はできません。いくつかのメンバーを無視するか、クラスの大部分をマッピングしていない場合は、クラスの明示的な列マッピングを指定して、マッピングしたい列を飾ることができます。私はORM特有のクラフトを「純粋な」POCOに追加することについてあなたの敬意を理解していますが、残念ながらその情報はどこかにある必要があります.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にもう1つのバージョンがあるのか​​不思議です。どちらを使うのが良いでしょうか? – Samuel

+0

私のバージョンには、より多くの機能とバグの修正があります。 – Schotime

0

を匿名のタイプ。あなたのクラスが深くネストされている場合、それはPITAことができるが、FOO

それはちょうど少しより多くの仕事
public void InsertFoo(Foo f) 
{ 
    var db = new Database("connection");   
    var petaPocoFooObj = new {f.Id} 
    db.Insert("FooTable", "FooId", petaPocoFooObj); 
} 

を保存するためのあなたの方法で