[英]nhibernate varbinary(max) byte array mapping
我瀏覽了這里和其他地方的所有答案,但似乎沒有任何效果。 我有一個表(SQL Server 2014),其數據類型為varbinary(max),名稱為“ Image”。我正在使用NHibernate版本3.3.1.4000,該版本具有有關varbinary問題的一些修復程序。
這是我當前的休眠映射:
<property name="Image" type="BinaryBlob">
<column name="Image" sql-type="varbinary(2147483647)" length="2147483647"/>
</property>
我還嘗試了以下變體:
<property name="Image" type="BinaryBlob"/>
<property name="Image" length="2147483647"/>
這是我的(c#類)屬性:
public virtual byte[] Image { get; set; }
我遇到了熟悉的錯誤:
---> System.Data.SqlClient.SqlException: String or binary data would be truncated.
我感覺答案正盯着我,但我只是看不見。 任何幫助將不勝感激。
您必須在代碼中的某個位置或配置中的某個位置執行此操作。 我正在通過代碼使用NHibernate 3.3進行映射,並且映射到VARBINARY(MAX)
沒有問題。
這是我的屬性定義:
Property(x => x.Photo, map =>
{
map.Type(NHibernateUtil.BinaryBlob);
map.Length(Int32.MaxValue);
});
這是我的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'";
});
請注意,我指定的是驅動程序和方言。 MsSql2005Dialect之前不支持VARBINARY(MAX)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.