Как заставить Nhibernate генерировать таблицу с Текстовым полем вместо nvarchar (255)

Этот код безопасно работает для преобразования объекта в словарь (исходя из того, что исходный объект происходит из словаря):

    private static Dictionary<TKey, TValue> ObjectToDictionary<TKey, TValue>(object source)
    {
        Dictionary<TKey, TValue> result = new Dictionary<TKey, TValue>();

        TKey[] keys = { };
        TValue[] values = { };

        bool outLoopingKeys = false, outLoopingValues = false;

        foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(source))
        {
            object value = property.GetValue(source);
            if (value is Dictionary<TKey, TValue>.KeyCollection)
            {
                keys = ((Dictionary<TKey, TValue>.KeyCollection)value).ToArray();
                outLoopingKeys = true;
            }
            if (value is Dictionary<TKey, TValue>.ValueCollection)
            {
                values = ((Dictionary<TKey, TValue>.ValueCollection)value).ToArray();
                outLoopingValues = true;
            }
            if(outLoopingKeys & outLoopingValues)
            {
                break;
            }
        }

        for (int i = 0; i < keys.Length; i++)
        {
            result.Add(keys[i], values[i]);
        }

        return result;
    }
5
задан Webjedi 26 May 2009 в 20:36
поделиться

3 ответа

Проблема заключается в указании имени столбца дважды ... после того, как я его взял, а длину вне элемент свойства работал отлично

 <property name="AnnouncementText" type="StringClob">
  <column name="AnnouncementText" sql-type="text"/>
</property>
8
ответ дан 13 December 2019 в 05:41
поделиться

это совершенно не поможет, но я помню старые добрые времена; -) ...

create table YourTable
(
    ...
    AnnouncementText     text null
    ...

)
-2
ответ дан 13 December 2019 в 05:41
поделиться

I'm used to SQL Server 2005 and the dialect it uses, but I presume you can do something similar. Since nvarchar(n) allows n up to 4000, a value above this will use nvarchar(max).

I presume that SQL Server 2000, which it sounds like you're using, does something similar once you hit the limit. If I read the NHibernate code correctly (NHibernate.Dialect.MsSql2000Dialect..ctor()) you get ntext once you pass 0xFA0 = 4000 characters.

<property name="AnnouncementText" column="AnnouncementText" type="string" length="10000"/>
6
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: