0
byte [] 프로퍼티 (BLOB)를 가진 하나의 객체를 가진 스키마를 검증해야합니다. 유효성 검사를 실행할 때 OverflowException이 발생합니다. "값이 Int32에 너무 크거나 작았습니다."NHibernate : byte [] 프로퍼티를 가진 스키마 유효성 확인
나는 NHibernate 3.1.0.400 with 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);
}
}
작동 MS SQL에서 OK이면 VARBINARY (8000) 열이 만들어집니다. 당신은 명시 적으로 값 필드에 대한 큰 길이를 설정하려고 할 수 http://stackoverflow.com/a/4723020/43846 – stuartd
시도, 나를 도와주지 않았어. – Archeg