Вопрос

Мой класс Saga выглядит следующим образом:

public class SagaData : IContainSagaData
{
    [Unique]
    public virtual string SagaKey { get; set; }

    public virtual string Data { get; set; }

    #region IContainSagaData

    public virtual Guid Id { get; set; }

    public virtual string Originator { get; set; }

    public virtual string OriginalMessageId { get; set; }

    #endregion IContainSagaData
}
.

Я устанавливаю саги в MSSQL.Созданная таблица имеет следующую структуру:

CREATE TABLE [dbo].[SagaData](
    [Id] [uniqueidentifier] NOT NULL,
    [SagaKey] [nvarchar](255) NULL,
    [Data] [nvarchar](255) NULL,
    [Originator] [nvarchar](255) NULL,
    [OriginalMessageId] [nvarchar](255) NULL,
PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
UNIQUE NONCLUSTERED 
(
    [SagaKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
.

Свойство Data (тип строки) было отображено на nvarchar(255).Очевидно, что когда я назначаю более 255 символов к тому, что свойство не удается с сообщением: String or binary data would be truncated.Как я могу заставить его сделать nvarchar(max)?

Я использую NServiceBus 4.4.2.

Это было полезно?

Решение

Решение довольно просто.Я добавил файл HBM для этого класса, установите его в качестве встроенного ресурса и Nibernate автоматически загружают его.Вот как это выглядит:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="LuxMed.BackEnd.CRM.B2C.NSB.Host"
                   namespace="LuxMed.BackEnd.CRM.B2C.NSB.Host.Sagas">
  <class name="SagaData">
    <id name="Id" />
    <property name="SagaKey" unique="true" />
    <property name="Data" type="StringClob" />
    <property name="Originator" />
    <property name="OriginalMessageId" />
  </class>
</hibernate-mapping>
.

type="StringClob" - это то, что делает nvarchar(max) в БД.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top