2012-09-07 69 views
0

我需要验证模式,我有一个对象与字节[]属性(BLOB)。当我运行验证时,我收到OverflowException:“Int32值过大或过小。”NHibernate:验证模式与字节[]属性

我使用NHibernate 3.1.0.400与FluentNHibernate 1.2.0.712 我已经创建了测试项目来检查。下面是代码(它属于在验证):

static void Main(string[] args) 
    { 
     var configuration = new NHibernate.Cfg.Configuration(); 

     string connectionString = "some connection string"; 
     Console.WriteLine("Running test with connection string: {0}", connectionString); 
     Dictionary<string, string> props = new Dictionary<string, string>() 
               { 
                {"connection.provider", "NHibernate.Connection.DriverConnectionProvider"}, 
                {"connection.driver_class", "NHibernate.Driver.MySqlDataDriver"}, 
                {"connection.connection_string", connectionString}, 
                {"dialect", "NHibernate.Dialect.MySQL5Dialect"}, 
               }; 
     configuration.AddProperties(props); 
     var mappings = Fluently.Configure(configuration) 
      .Mappings(m => m 
           .FluentMappings.AddFromAssemblyOf<DataResource>() 
           .Conventions.AddFromAssemblyOf<DataResource>()); 

     var sessionFactory = mappings 
       .ExposeConfiguration(DoExtendedConfiguration) 
       .BuildSessionFactory(); 
    } 

    private static void DoExtendedConfiguration(Configuration configuration) 
    { 
     SchemaExport schemaExport = new SchemaExport(configuration).SetDelimiter(";").SetOutputFile("schema.sql"); 
     schemaExport.Create(false, true); 

     SchemaValidator schemaValidator = new SchemaValidator(configuration); 
     schemaValidator.Validate(); 
    } 

public class DataResource 
{ 
    public int Id { get; set; } 
    public byte[] Value { get; set; } 
} 
public class DataResourceMap : ClassMap<DataResource> 
{ 
    public DataResourceMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Value); 
    } 
} 
+0

在MS SQL中可以正常工作,它会创建一个VARBINARY(8000)列。你可以尝试明确地设置一个很大的值字段的长度,如http://stackoverflow.com/a/4723020/43846 – stuartd

+0

试过,没有帮助我。 – Archeg

回答

0

我没有找到有关官员,错误没有提到,但我更新FluentNhibernate和NHibernate后,最后一个可用的版本(通过的NuGet),发行解决。这套房适合我,所以我会解决问题,好像没人发现任何其他解决方案和堆栈允许我那样做。