문제

내 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에서 Sagas를 지속하고 있습니다.생성 된 테이블에는 다음과 같은 구조가 있습니다.

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.어떻게 작동시키기 위해 강요 할 수 있습니까?

Nservicebus 4.4.2를 사용하고 있습니다.

도움이 되었습니까?

해결책

해결책은 매우 간단합니다.해당 클래스에 대한 HBM 파일을 추가하고 포함 된 리소스로 설정하고 Nhibernate가 자동으로로드됩니다.이것이 보이는 방법입니다 :

<?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)를 db에서 만드는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top