Rub*_*ren 0 c# xml mapping nhibernate sql-server-2014
我在这里和网上的其他地方查看了所有答案,但似乎没有任何效果.我有一个表(sql server 2014)与varbinary(max)数据类型,名为"Image"我正在使用NHibernate版本3.3.1.4000,它有一些关于varbinary问题的修复.
这是我目前的hibernate映射:
<property name="Image" type="BinaryBlob">
<column name="Image" sql-type="varbinary(2147483647)" length="2147483647"/>
</property>
Run Code Online (Sandbox Code Playgroud)
我也试过以下变化:
<property name="Image" type="BinaryBlob"/>
<property name="Image" length="2147483647"/>
Run Code Online (Sandbox Code Playgroud)
这是我的(c#class)属性:
public virtual byte[] Image { get; set; }
Run Code Online (Sandbox Code Playgroud)
我收到了熟悉的错误:
---> System.Data.SqlClient.SqlException: String or binary data would be truncated.
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,答案是正确地盯着我,但我看不到它.任何帮助将不胜感激.
你可以在任何代码或配置的某个地方做这件事.我正在使用NH 3.3和代码映射,并且它没有问题地映射到VARBINARY(MAX).
这是我的属性定义
Property(x => x.Photo, map =>
{
map.Type(NHibernateUtil.BinaryBlob);
map.Length(Int32.MaxValue);
});
Run Code Online (Sandbox Code Playgroud)
这是我的SessionFactory配置
Configure.DataBaseIntegration(db =>
{
db.Dialect<MsSql2008Dialect>();
db.Driver<SqlClientDriver>();
db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
db.IsolationLevel = IsolationLevel.ReadCommitted;
db.ConnectionStringName = System.Environment.MachineName;
db.BatchSize = 20;
db.Timeout = 10;
db.HqlToSqlSubstitutions = "true 1, false 0, yes 'Y', no 'N'";
});
Run Code Online (Sandbox Code Playgroud)
请注意,我正在指定驱动程序和方言.MsSql2005Dialect之前不支持VARBINARY(MAX).你可以在这看到
https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/Dialect/MsSql2005Dialect.cs
| 归档时间: |
|
| 查看次数: |
6534 次 |
| 最近记录: |