通过代码映射Nhibernate 3.2 sqlite blob字段与byte[]不工作
本文关键字:byte 字段 工作 blob sqlite 代码 映射 Nhibernate | 更新日期: 2023-09-27 17:54:32
我有一个非常简单的sqlite数据库,在表图像中有一个blob列用于存储图像,我使用的是Nhibernate 3.2,我从NuGet安装,我使用的是代码映射的新功能,下面是代码:
包:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Iesi.Collections" version="3.2.0.4000" targetFramework="net40" />
<package id="NHibernate" version="3.2.0.4000" targetFramework="net40" />
</packages>
模型类:
using DBAccessLayer.DataAccess;
using NHibernate.Type;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media.Imaging;
namespace DBAccessLayer.Models
{
public class Picture
{
public virtual int Id { get; set; }
public virtual Byte[] BytesImage { get; set; }
public virtual Place Place { get; set; }
public virtual BitmapImage Image
{
get
{
return Tools.ParseBlob(BytesImage);
}
}
}
}
Mapper类:
using DBAccessLayer.Models;
using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Type;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DBAccessLayer.Mappers
{
public class PictureMap : ClassMapping<Picture>
{
public PictureMap()
{
Table("images");
Id(x => x.Id, m =>
{
m.Generator(Generators.Identity);
m.Column("id");
});
Property(x => x.BytesImage, m => { m.Column("image"); });
ManyToOne(p => p.Place, map => map.Column("place_id"));
}
}
}
当我在控制台运行一个简单的查询来检索图片时,下一个nhibernate解析错误出现:
{"无法将类型Byte[]的字段image2_中的值强制转换为类型BinaryType。请检查以确保映射是正确的,并且您的数据提供程序支持此数据类型。"}
{"指定的类型转换无效。"}
我使用这个配置,它的工作没有映射blob字段,所以我不认为这是问题:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="NHibernate.Test">
<property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
<property name="connection.connection_string">Data Source=datacenter.db;Version=3</property>
<property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
我需要解决这个问题,所以我可以检索图像存储在我的数据库,任何帮助感谢。
试试这个博客:
- http://blog.calyptus。欧盟/seb/2009/03/large-object-storage-for-nhibernate-and-ddd-part-1-blobs-clobs-and-xlobs/
- http://kozmic.net/2009/08/13/adjusting-nhibernate-mapping-for-tests/
- http://nhibernate.info/blog/
他们应该是来解决问题的