簡體   English   中英

nhibernate varbinary(max)字節數組映射

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM