6

私は Dapper.net 拡張機能を使用しており、完全なカスタム マッパーを作成せずに特定のプロパティを無視したいと考えています。以下の ClassMapper でわかるように、1 つのプロパティを無視したいだけなのに、冗長なコードがたくさんあります。これを達成するための最良の方法は何ですか?

ここで提供されている答えが気に入っていますhttps://stackoverflow.com/a/14649356しかし、「書き込み」が定義されている名前空間が見つかりません。

public class Photo : CRUD, EntityElement
{
    public Int32 PhotoId { get; set; }
    public Guid ObjectKey { get; set; }
    public Int16 Width { get; set; }
    public Int16 Height { get; set; }
    public EntityObjectStatus ObjectStatus { get; set; }
    public PhotoObjectType PhotoType { get; set; }
    public PhotoFormat2 ImageFormat { get; set; }
    public Int32 CategoryId { get; set; }

    public int SomePropertyIDontCareAbout { get; set; }
}


public class CustomMapper : DapperExtensions.Mapper.ClassMapper<Photo>
{
    public CustomMapper()
    {
        Map(x => x.PhotoId).Column("PhotoId").Key(KeyType.Identity);
        Map(x => x.ObjectKey).Column("ObjectKey");
        Map(x => x.Width).Column("Width");
        Map(x => x.Height).Column("Height");
        Map(x => x.ObjectStatus).Column("ObjectStatus");
        Map(x => x.PhotoType).Column("PhotoType");
        Map(x => x.ImageFormat).Column("ImageFormat");
        Map(x => x.CategoryId).Column("CategoryId");

        Map(f => f.SomePropertyIDontCareAbout).Ignore();
    }
}
4

3 に答える 3

5

このWriteAttributeクラスはDapper.Contrib.Extensions、Dapper.Contrib プロジェクトの一部である名前空間にあります。ナゲット経由で追加できます。パッケージの名前は「Dapper.Contrib」です

于 2013-08-17T22:02:52.523 に答える
4

You can decorate the property with [Computed] and the property will be ignored on insert. Semantically it may not be perfect but it seems to do the job:

[Computed]
public int SomePropertyIDontCareAbout { get; set; }

Then again, Peter Ritchie's answer is likely more spot-on with:

[WriteAttribute(false)]
public int SomePropertyIDontCareAbout { get; set; }
于 2016-04-21T17:52:31.080 に答える