【问题标题】:Sql 2008 Filestream with NHibernate带有 NHibernate 的 Sql 2008 文件流
【发布时间】:2009-05-15 03:13:52
【问题描述】:

我正在尝试在 sql server 2008 中使用 Filestream 来存储用户上传的图像。

我的问题是 NHibernate 不会出错,但它也不会将数据保存到数据库中。没有创建记录。

下面的 Image 类是一个自定义类(不要与 System.Drawing.Image 混淆)

public class ImageMap : ClassMap<Image>
{
    public ImageMap()
    {
        WithTable("Images");

        Id(x => x.ImageId).GeneratedBy.GuidComb().WithUnsavedValue(Guid.Empty);

        Map(x => x.ImageData);
        Map(x => x.Extension);

        References(x => x.Owner, "UserId");
    }
}

我的保存方法如下:

public void Save(Image image)
    {
        ISession session = GetSession();

        session.SaveOrUpdate(image);
    }

也许我保存错误,也许我的映射已关闭。 ImageData 是数据库中的 varbinary(max) 字段。

【问题讨论】:

  • 那么,您是否成功地将 SQL 2008 Filestream 属性与 NHibernate 一起使用?这是我能找到的唯一一篇帖子。
  • 我们最终放弃了使用 Filestream。我相信我们永远无法让它与 Nhibernate 一起正常工作。祝你好运!
  • 如果您有兴趣使用文件流stackoverflow.com/a/33636478/2690296,可以看看这个答案

标签: nhibernate fluent-nhibernate filestream varbinary


【解决方案1】:

这个问题的答案很简单。我删除了对 save 方法的覆盖,它自己修复了。我们的基类已经定义了 save 方法,而我的覆盖完全是错误的。

public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            tx.Commit();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多