我有下一个映射,我在其中指定一些字符串字段的长度:
public ResolutionMap()
{
Schema("dbo");
Table("Resolution");
Id(x => x.IdResolution, "resolution_id").UnsavedValue(0).GeneratedBy.Identity();
Component(x => x.Store, m =>
{
m.Map(y => y.StoreCodeId, "store_code_id");
m.Map(y => y.StoreCode, "store_code").Length(10);
}
);
Map(x => x.ResolutionData, "resolution_data").Length(42);
}
但是,当我观察在 SQL Server Profiler 上执行的更新查询时,我发现在映射上设置的长度在参数声明中根本没有得到尊重:
exec sp_executesql
N'UPDATE dbo.Resolution SET resolution_data = @p0, store_code_id = @p1, store_code = @p2 WHERE resolution_id = @p3',
N'@p0 nvarchar(4000),@p1 int,@p2 nvarchar(4000),@p3 int',
@p0=N'Test',@p1=89,@p2=N'ST000003',@p3=275
为什么会发生这种情况?我需要设置长度,因为这会减慢更新过程。
我目前在 .NET Framework 3.5 上使用 Fluent NHibernate 1.3.0.733 和 NHibernate 3.3.1。