سؤال

صف 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
}

أنا مستمر في Sagas في 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 لهذه الفئة، وقمت بتعيينه كمورد مضمن وقام 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) في ديسيبل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top