标签: fluent-nhibernate

如何使用NHibernate创建多列索引或唯一约束

如何使用NHibernate Mapping或Fluent NHibernate创建多列索引和/或唯一约束.

nhibernate nhibernate-mapping fluent-nhibernate

15
推荐指数
2
解决办法
8260
查看次数

流利的NHibernate"无法解决财产问题"

我已经阅读了很多关于同样错误的问题,但没有找到与我的确切问题相符的问题.我正在尝试使用Fluent NHibernate访问对象的属性,它本身是根对象的一部分.一些答案说我需要使用投影,其他我需要使用连接,我认为它应该通过延迟加载.

这是我的两个类以及Fluent映射:

艺术家班

public class Artist
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual IList<Album> Albums { get; set; }
    public virtual string MusicBrainzId { get; set; }
    public virtual string TheAudioDbId { get; set; }

    public Artist() { }
}

public class ArtistMap : ClassMap<Artist>
{
    public ArtistMap()
    {
        LazyLoad();
        Id(a => a.Id);
        Map(a => a.Name).Index("Name");
        HasMany(a => a.Albums)
            .Cascade.All();
        Map(a => a.MusicBrainzId);
        Map(a => a.TheAudioDbId);
    } …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate fluent-nhibernate queryover

15
推荐指数
1
解决办法
2万
查看次数

如何在sql server中创建一个varbinary(max)字段,以获得流畅的nhibernate

如何在源代码大小为varbinary(max)的sql server 2005表中创建一个varbinary字段,以获得流畅的nhibernate?目前我总是得到varbinary(8000)的默认值,这不够大,因为我将存储图像文件.

我尝试过使用CAstle.ActiveRecord但尚未取得任何成功.

 [ActiveRecord]
 public class MyFile : Entity
{
    public virtual string FileName { get; set; }
    public virtual string FileType { get; set; }
    public virtual int FileVersion { get; set; }
    public virtual int FileLength { get; set; }

    [Property(ColumnType = "BinaryBlob", SqlType = "VARBINARY(MAX)")]
    public virtual byte[] FileData { get; set; }   
}
Run Code Online (Sandbox Code Playgroud)

几个小时都未能找到解决方案,所以提前谢谢

捷克克朗

nhibernate nhibernate-mapping fluent-nhibernate varbinary

14
推荐指数
2
解决办法
1万
查看次数

NHibernate SchemaUpdate在生产代码中是否安全?

为简单起见.我在运行时使用Fluent NHibernate的Automapping和NHibernate的SchemaUpdate.在每次运行时,Automapper为所有实体类创建映射,SchemaUpdate将模式应用于现有数据库.我惊喜地发现它对空数据库也能正常工作.到目前为止,它在开发环境中运行良好,并且让我能够快速响应错误.

我的问题是它是否足够可靠留在生产代码中.显然,每次程序在生产环境中启动时都不需要运行,但它对增量产品更新很有用(尽管我不打算在产品发布后对域进行任何重大更改).

(也许我真正的问题应该是结合使用这两个工具有多安全?)

更新

该应用程序有两个版本:独立桌面和多用户客户端/服务器.此外,由于业务领域(税务软件)的性质,我每年都有一个干净的数据库.

nhibernate fluent-nhibernate production-environment

14
推荐指数
3
解决办法
3729
查看次数

确保NHibernate SessionFactory仅创建一次

我编写了一个NHibernateSessionFactory类,它包含一个静态的Nhibernate ISessionFactory.这用于确保我们只有一个会话工厂,并且第一次调用OpenSession()我创建了一个实际的SessionFactory - 下次我使用相同的并打开一个会话.代码如下所示:

public class NhibernateSessionFactory : INhibernateSessionFactory
{
    private static ISessionFactory _sessionFactory;

    public ISession OpenSession()
    {
        if (_sessionFactory == null)
        {
            var cfg = Fluently.Configure().
                Database(SQLiteConfiguration.Standard.ShowSql().UsingFile("Foo.db")).
                Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>());
            _sessionFactory = cfg.BuildSessionFactory();
            BuildSchema(cfg);
        }
        return _sessionFactory.OpenSession();
    }

    private static void BuildSchema(FluentConfiguration configuration)
    {
        var sessionSource = new SessionSource(configuration);
        var session = sessionSource.CreateSession();
        sessionSource.BuildSchema(session);            
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个问题.我的应用程序分为客户端和服务器.Nhibernate的东西在服务器端.在启动时,我的客户端和服务器都希望通过一些将使用NhibernateSessionFactory的服务来访问数据库.结果是在请求来自客户端之前是否创建了_sessionFactory的竞争条件.如果不是它会失败..

我想我需要在NhibernateSessionFactory中使用某种排队或等待机制,但我不知道该怎么做.以前有人遇到过同样的问题吗?什么是最好的解决方案?

c# nhibernate sessionfactory fluent-nhibernate

14
推荐指数
1
解决办法
2万
查看次数

NHibernate IQueryable集合作为root的属性

我有一个根对象,其属性是一个集合.

例如:

I have a Shelf object that has Books.

// Now
public class Shelf 
{
    public ICollection<Book> Books {get; set;}
}

// Want 
public class Shelf 
{
   public IQueryable<Book> Books {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我想要完成的是返回一个IQueryable的集合,这样我就可以直接从父节点运行分页和过滤集合.

var shelf = shelfRepository.Get(1);

var filtered = from book in shelf.Books
               where book.Name == "The Great Gatsby"
               select book;
Run Code Online (Sandbox Code Playgroud)

我希望NHibernate专门执行该查询,而不是全部加载整个集合,然后在内存中解析它(这是我使用ICollection时当前发生的事情).

这背后的原因是我的收藏可能是巨大的,成千上万的记录,并且获取所有查询可能会破坏我的数据库.

我想隐含地这样做,以便当NHibernate在我的课上看到IQueryable时它知道该怎么做.

我查看了NHibernate的LINQ提供程序,目前我正在决定采用大型集合并将它们拆分到自己的存储库中,以便我可以显式调用过滤和分页.

LINQ To SQL提供类似于我所说的内容.

c# nhibernate domain-driven-design fluent-nhibernate

14
推荐指数
1
解决办法
4539
查看次数

流利的Nhiberhate和缺少毫秒

我正在使用Fluent Nhibernate和Nhibernate来完成我当前的项目.我需要将时间记录到毫秒.我有这个用于我的映射

            Map(x => x.SystemDateTime)
            .CustomType("Timestamp")
            .Not.Nullable();
Run Code Online (Sandbox Code Playgroud)

我创建了hbm.xml文件,该行如下:

<property name="SystemDateTime" type="Timestamp">
  <column name="SystemDateTime" not-null="true" />
</property>
Run Code Online (Sandbox Code Playgroud)

我已经读过这是修复,但数据库中的记录没有毫秒.有谁解决了这个问题.我也尝试过CustomSqlType.

谢谢

nhibernate fluent-nhibernate fluent-nhibernate-mapping

14
推荐指数
1
解决办法
3649
查看次数

Castle Windsor IoC在MVC应用程序中

准备一堵代码墙...这是一个很长的阅读,但它是我可以得到的冗长.

回应仍然丢失在存储库和解耦,ASP.NET MVC

我开始越来越接近理解这一切了.我正在尝试习惯使用它.这是我到目前为止所拥有的.

项目

Project.Web(ASP.NET MVC 3.0 RC)

  • 使用Project.Models
  • 使用Project.Persistence

项目

Project.Models(域对象)

  • Membership.Member
  • Membership.IMembershipProvider

项目

Project.Persistence(流利的nHibernate)

  • 使用Project.Models
  • 使用Castle.Core
  • 使用Castle.Windsor

  • Membership.MembershipProvider : IMembershipProvider

我有以下课程 Project.Persistence

using Castle.Windsor;

using Castle.MicroKernel.Registration;
using Castle.MicroKernel.SubSystems.Configuration;

namespace Project.Persistence
{
    public static class IoC
    {
        private static IWindsorContainer _container;

        public static void Initialize()
        {
            _container = new WindsorContainer()
                .Install(
                    new Persistence.Containers.Installers.RepositoryInstaller()
            );
        }

        public static T Resolve<T>()
        {
            return _container.Resolve<T>();
        }
    }
}
namespace Persistence.Containers.Installers
{
    public class RepositoryInstaller : IWindsorInstaller
    {
        public …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc castle-windsor fluent-nhibernate

14
推荐指数
2
解决办法
1万
查看次数

哪个版本的流利nhibernate与nhibernate 3.2兼容

我看到当我从Nuget安装流畅的nhibernate 1.2时,它会下载nhibernate 3.1.如果我想使用nhibernate 3.2,我将如何通过nuget实现这一点并且它与流畅的nhibernate 1.2兼容?

nhibernate fluent-nhibernate nuget

14
推荐指数
3
解决办法
5248
查看次数

流利的Nhibernate多对多映射方式

我有两个类Order和Items

我想要一个像这样的方法

class Order
{
    public virtual IList<Item> GetItems(Order order)
    {
         //get items for that order.
    }
}
class Item
{
    public virtual IList<Order> GetOrders(Item item)
    {
         //get all the orders in which that items is present.
    }
}
Run Code Online (Sandbox Code Playgroud)

是编写创建这样的方法还是我应该创建一个属性

     public virtual IList<Item> Items { get; set; }
Run Code Online (Sandbox Code Playgroud)

我应该怎么做这个映射是nhibernate?

fluent-nhibernate fluent-nhibernate-mapping

14
推荐指数
1
解决办法
2万
查看次数