NServiceBus y nvarchar(máx.)
-
26-12-2019 - |
Pregunta
Mi clase de Saga es la siguiente:
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
}
Estoy persistiendo Sagas en MSSQL.La tabla creada tiene la siguiente estructura:
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
La propiedad (tipo de cadena) se ha asignado a nvarchar(255)
.Obviamente, cuando asigno más de 255 caracteres a esa propiedad falla con el mensaje: String or binary data would be truncated
.¿Cómo puedo obligarlo a hacerlo? nvarchar(max)
?
Estoy usando NServiceBus 4.4.2.
Solución
La solución es bastante simple.Agregué un archivo HBM para esa clase, lo configuré como recurso integrado y NHibernate lo cargó automáticamente.Así es como se ve:
<?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"
es lo que hace nvarchar(max)
en DB.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow