簡體   English   中英

在fluent NHibernate中將對象[]存儲為列

[英]Storing an object[] as column in Fluent NHibernate

我有以下(部分)模型:

class LogMessage{
    string Format;
    object[] args;
}

我想將args[]存儲為表中的單個列,以充分利用format參數通常可序列化或可以先驗轉換為字符串的事實。

我不想存儲格式化的消息,我想分別存儲format和args(這有幾個優點)。

我如何告訴Fluent NHibernate在保留實體時使用BLOB類型存儲該列並執行簡單的二進制序列化/反序列化?

Map(x => x.Args).CustomType<ObjectArrayType>();

class ObjectArrayType : IUserType
{
    public object NullSafeGet(IDBReader reader, string[] names, object owner)
    {
        byte[] bytes = NHibernateUtil.BinaryBlob.NullSafeGet(reader, names[0]);
        return Deserialize(bytes);
    }

    public void NullSafeSet(IDBCommand cmd, object value, int index)
    {
        var args = (object[])value;
        NHibernateUtil.BinaryBlob.NullSafeSet(cmd, Serialize(args), index);
    }

    public Type ReturnType
    {
        get { return typeof(object[]); }
    }

    public SqlType[] SqlTypes
    {
        get { return new [] { SqlTypeFactory.BinaryBlob } }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM