如何在sql server中创建一个varbinary(max)字段,以获得流畅的nhibernate

czk*_*czk 14 nhibernate nhibernate-mapping fluent-nhibernate varbinary

如何在源代码大小为varbinary(max)的sql server 2005表中创建一个varbinary字段,以获得流畅的nhibernate?目前我总是得到varbinary(8000)的默认值,这不够大,因为我将存储图像文件.

我尝试过使用CAstle.ActiveRecord但尚未取得任何成功.

 [ActiveRecord]
 public class MyFile : Entity
{
    public virtual string FileName { get; set; }
    public virtual string FileType { get; set; }
    public virtual int FileVersion { get; set; }
    public virtual int FileLength { get; set; }

    [Property(ColumnType = "BinaryBlob", SqlType = "VARBINARY(MAX)")]
    public virtual byte[] FileData { get; set; }   
}
Run Code Online (Sandbox Code Playgroud)

几个小时都未能找到解决方案,所以提前谢谢

捷克克朗

Dan*_*tch 10

我不确定为什么你的ActiveRecord示例不起作用,但你可以尝试设置列的长度.

使用Fluent NHibernate,您应该能够做到

Map(x => x.FileData)
    .WithLengthOf(2147483647)
Run Code Online (Sandbox Code Playgroud)


Pet*_*uck 5

我遇到了与SQL FileStream和Fluent NHibernate类似的问题,我的BLOB写入在8000字节处被截断.以下语法最终解决了问题:

Map(x => x.Bytes)
  .CustomSqlType("VARBINARY (MAX) FILESTREAM")
  .Length(2147483647)
  .Not.Nullable();
Run Code Online (Sandbox Code Playgroud)