NHibernate如何知道保存哪个表?

时间:2015-03-18 12:12:16

标签: c# nhibernate fluent-nhibernate

我做了一些研究,因为之前从未使用过nhibernate,我发现要将实体保存到数据库,我应该使用"SaveOrUpdate()"所以我有以下内容:

Object myObject = new Object { someProperty="something" };
using (ISession session = NHibernateSessionFactoryManager.Factory.OpenSession())
{
    session.SaveOrUpdate(myObject);
}

我必须在哪个地方指定我要保存的表,或者NHibernate是否从对象类型中指出了这个?

1 个答案:

答案 0 :(得分:2)

如果查看ISession界面,您会发现只有两种SaveOrUpdate方法:

void SaveOrUpdate(object obj);

void SaveOrUpdate(string entityName, object obj);

您正在使用第一个,它使用您定义的映射将obj.GetType()映射到表格。

如果您使用

,还有另一个使用entityName的重载
  

持久化实体不一定必须在运行时表示为POCO类。 NHibernate还支持动态模型(在运行时使用Dictionaries的Dictionaries)。使用这种方法,您不会编写持久化类,只能编写映射文件。

在这些映射文件中,您必须定义实体名称。