Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 是否可以在c中仅将NHibernate与数据集一起使用#_C# 4.0_Nhibernate_Dataset_Nhibernate Mapping_Fluent Nhibernate Mapping - Fatal编程技术网

C# 4.0 是否可以在c中仅将NHibernate与数据集一起使用#

C# 4.0 是否可以在c中仅将NHibernate与数据集一起使用#,c#-4.0,nhibernate,dataset,nhibernate-mapping,fluent-nhibernate-mapping,C# 4.0,Nhibernate,Dataset,Nhibernate Mapping,Fluent Nhibernate Mapping,对不起,如果这是一个愚蠢的问题。是否可以将NHibernate与c#中的数据集一起使用?我的意思是,我不打算拥有任何数据库,但会在数据表或数据行触发事件时更新我的其他应用程序。我希望将hibernate映射到这些数据集表,并希望对事件处理程序使用静态实现。因此,可以在具有多个事件处理程序的单个静态类中跟踪对数据集的所有更改。因此,除了我对其他应用程序的更新之外,我想使用NHibernate。我认为您的问题可能需要更多的澄清,以添加更多的细节,但我将给出我的想法 基础 基本上,NHibernate

对不起,如果这是一个愚蠢的问题。是否可以将NHibernate与c#中的数据集一起使用?我的意思是,我不打算拥有任何数据库,但会在数据表或数据行触发事件时更新我的其他应用程序。我希望将hibernate映射到这些数据集表,并希望对事件处理程序使用静态实现。因此,可以在具有多个事件处理程序的单个静态类中跟踪对数据集的所有更改。因此,除了我对其他应用程序的更新之外,我想使用NHibernate。

我认为您的问题可能需要更多的澄清,以添加更多的细节,但我将给出我的想法

基础 基本上,NHibernate是一个对象关系映射器,也就是说,它将持久性模型映射到(无论您选择的数据库是什么)表和it字段,反之亦然

您真正要做的是不让数据库由NHibernate支持,而是将此行为更改为使用DataTables/DataRows。这可以通过大量的黑客和管道系统来实现,但如果我是你,我会尽力避免这种情况

一种方法 最简单的方法是使用基于文件或内存中的持久性表示,例如SQLite或SQLServerExpress。我使用内存中的SQLite进行NHibernate持久性单元测试

您可能需要将NHibernate(使用FluentNHibernate)配置为使用SQLite数据库:

ISessionFactory _sessionFactory = Fluently.Configure()
        .Database(SQLiteConfiguration.Standard.InMemory().ShowSql())
        .Mappings(m => m.FluentMappings.AddFromAssembly(assemblyContainingMappedType))
        //.Mappings(m => m.AutoMappings.Add(AutoMap.Assembly(assemblyContainingMappedType)))
        .ExposeConfiguration(cfg => _configuration = cfg)
#if DEBUG 
        .Diagnostics(d => d.Enable())
        .Diagnostics(d => d.OutputToConsole())
#endif
        .BuildSessionFactory();
这样您就有了一个
ISessionFactory
实例。现在,通过使用Fluent映射,只需执行:

ISession _session = _sessionFactory.OpenSession();
new SchemaExport(_configuration).Execute(true, true, false, _session.Connection, Console.Out);
现在您已经启动并运行了内存中的SQLite。您唯一需要实现的就是使用NHibernate的
会话
(例如:
\u session.Save()
)来处理数据库,并让存储库或查询返回
数据集
数据表