0

byte []プロパティ(BLOB)を持つオブジェクトが1つあるスキーマを検証する必要があります。検証を実行すると、「Int32に対して値が大きすぎるか小さすぎる」というOverflowExceptionが発生します。

FluentNHibernate1.2.0.712でNHibernate3.1.0.400を使用しています。これを確認するためのテストプロジェクトを作成しました。コードは次のとおりです(検証中に発生します)。

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);
    }
}
4

1 に答える 1

0

関係者にはそのようなバグについての言及は見つかりませんでしたが、FluentNhibernateとNhibernateを(Nuget経由で)利用可能な最後のバージョンに更新した後、問題は解決しました。それは私に合っているので、他の解決策を誰も見つけられないかのように質問を閉じ、スタックがそれを可能にします。

于 2012-09-07T13:52:42.163 に答える