1

私は次のクラスを持っています:

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

プロパティを除外Boo1したいのですが、これらのプロパティを属性Boo2で装飾したくありません。PetaPoco.Ignore純粋なPOCOオブジェクトが欲しいです。コードでコマンドを実行できIgnoreますか、それともクエリ/ストアドプロシージャを作成して、すべてのフィールドを手動でマップする必要がありますか?

どんな助けでも大歓迎です!

4

3 に答える 3

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/

于 2012-03-13T12:17:41.797 に答える
2

属性を使用する以外に、フィールド/プロパティを無視する必要があることを PetaPoco に伝えることはできないようです。いくつかのメンバーを無視するか、クラスの大部分をマッピングしていない場合は、クラスの明示的な列マッピングを指定して、マップしたいメンバーをデコレートできます。「純粋な」POCO に ORM 固有のクラフトを追加することを躊躇していることは理解していますが、残念ながら、その情報はどこかにある必要があり、PetaPoco はマッピング ファイル (または構成のほとんどをまったく使用しない) を使用しないため、クラスはどこへ行く。

あなたができる唯一のことは、マップされるものとなるDTO / DAOを作成し、ドメインクラスとそのDTOの間で変換するための暗黙的または明示的な演算子を作成することです。したがって、DTO は、含めたくないフィールドを持つことができません。これにより、両方のクラスの POCO が保持され (演算子メソッドに関する感覚に応じて)、クエリ結果をドメイン クラスにキャストするという比較的単純な手順が追加されるだけです。

于 2012-03-12T16:05:54.680 に答える
0

これは匿名タイプに最適な場所です。

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

public void InsertFoo(Foo f)
{
    var db = new Database("connection");           
    var petaPocoFooObj = new {f.Id}
    db.Insert("FooTable", "FooId", petaPocoFooObj);
}

クラスが深くネストされている場合はPITAになる可能性がありますが、少し手間がかかります。

于 2012-04-04T23:17:40.347 に答える