[英]NServiceBus and nvarchar(max)
My Saga class is as follows: 我的佐贺课程如下:
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
}
I'm persisting Sagas in MSSQL. 我在MSSQL中坚持使用Sagas。 The created table has the following structure: 创建的表具有以下结构:
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
property (type of string) has been mapped to nvarchar(255)
. Data
属性(字符串类型)已映射到nvarchar(255)
。 Obviously, when I assign more than 255 characters to that property it fails with message: String or binary data would be truncated
. 显然,当我为该属性分配超过255个字符时,它将失败,并显示以下消息: String or binary data would be truncated
。 How can I force to make it nvarchar(max)
? 如何强制将其设置为nvarchar(max)
?
I'm using NServiceBus 4.4.2. 我正在使用NServiceBus 4.4.2。
The solution is quite simple. 解决方案非常简单。 I added a HBM file for that class, set it as Embedded Resource and NHibernate automatically loaded it. 我为该类添加了HBM文件,将其设置为Embedded Resource,NHibernate会自动加载它。 This is how it looks: 它是这样的:
<?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"
is what makes nvarchar(max)
in DB. type="StringClob"
是在数据库中生成nvarchar(max)
的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.