Установка строки, чтобы быть sql типом “varchar” вместо “nvarchar”

У меня есть следующее отображение:

public class LogEntryMap
{
    public LogEntryMap()
    {
        Map.Id(x => x.Id).GeneratedBy.Identity();
        Map(x => x.Context).CustomSqlType("varchar").Length(512);
    }
}

Однако использование SchemaExport для генерации базы данных в SQL Server, 2008, сгенерированный сценарий игнорирует длину поэтому в действительности, это заканчивает тем, что было a varchar с длиной 1:

create table OV_SAC.dbo.[LogEntry] (
    Id BIGINT IDENTITY NOT NULL,
   Context varchar null,
   primary key (Id)
)

.CustomSqlType("varchar 512") выдает исключение. И не определяя CustomSqlType, строки отображаются на nvarchar (который действительно уважает Length свойство).

Какие-либо предложения?

12
задан BartoszKP 8 January 2016 в 17:19
поделиться

2 ответа

Используйте .CustomType ("AnsiString") вместо "String" по умолчанию , и NHibernate будет использовать varchar вместо nvarchar .

23
ответ дан 2 December 2019 в 03:14
поделиться

Дох.

Map(x => x.Context).CustomSqlType("varchar (512)");

create table OV_SAC.dbo.[LogEntry] (
    Id BIGINT IDENTITY NOT NULL,
   Context varchar (512) null,
   primary key (Id)
)
8
ответ дан 2 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

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