当执行测试代码后,子实体和父实体均能保存到数据库,但是子实体对应的数据表中记录的父实体id的值全部为null,数据库为mysql,请问这是正常的么,是否需要设置双向映射后父实体ID才会同步保存?
1) father entity definition:class father
{
public virtual string name;
public virtual string id;
public virtual IList<string> children;
}2) child entity definition:class child
{
public virtual string id;
public virtual string name;
}3) mapping file for father<class name ="father" table="dbfather">
<id name="id" column ="id">
<generator class ="assigned"/>
</id>
<property name ="name"/>
<bag name="ichild">
<key column="fatherid" />
<one-to-many class="child" />
</bag>
</class>4) mapping file for child<class name ="child" table="dbchild">
<id name="id" column ="id">
<generator class ="assigned"/>
</id>
<property name ="name"/>
</class>5) test codesvar cfg = new NHibernate.Cfg.Configuration().Configure("hibernate.cfg.xml");
using (ISessionFactory sessionFactory = cfg.BuildSessionFactory())
{
ISession session = sessionFactory.OpenSession();
try
{
Child c = new Child();
c.id= Guid.NewGuid().ToString();
c.name= "test";
Father f = new Father();
f.id = Guid.NewGuid().ToString();
f.name= "ftest";
f.children.Add(child); session.Save(c);
session.Save(f);
}
finally
{
session.Flush();
}
}NHibernate数据库
1) father entity definition:class father
{
public virtual string name;
public virtual string id;
public virtual IList<string> children;
}2) child entity definition:class child
{
public virtual string id;
public virtual string name;
}3) mapping file for father<class name ="father" table="dbfather">
<id name="id" column ="id">
<generator class ="assigned"/>
</id>
<property name ="name"/>
<bag name="ichild">
<key column="fatherid" />
<one-to-many class="child" />
</bag>
</class>4) mapping file for child<class name ="child" table="dbchild">
<id name="id" column ="id">
<generator class ="assigned"/>
</id>
<property name ="name"/>
</class>5) test codesvar cfg = new NHibernate.Cfg.Configuration().Configure("hibernate.cfg.xml");
using (ISessionFactory sessionFactory = cfg.BuildSessionFactory())
{
ISession session = sessionFactory.OpenSession();
try
{
Child c = new Child();
c.id= Guid.NewGuid().ToString();
c.name= "test";
Father f = new Father();
f.id = Guid.NewGuid().ToString();
f.name= "ftest";
f.children.Add(child); session.Save(c);
session.Save(f);
}
finally
{
session.Flush();
}
}NHibernate数据库
解决方案 »
- “DevExpress.XtraReports.UI.XtraReport”的类型初始值设定项引发异常
- 做本地数据缓存 本地数据库是相对路径时无法获取远程数据库数据,使用绝对地址则可以,这是什么原因
- 求助求助。导出execl文件进度条的问题。
- 如何设置datagridview单元格中按钮的文本?
- VS2005 用户控件失色
- 在线`急等``
- “Microsoft.Practices.EnterpriseLibrary.Data.Database”并不包含“CreateConnection”的定义
- [200分]C#做安装程序部署时,如何实现注册!
- C#转Win32代码?
- 为什么我的web应用程序就是无法访问SQL数据库
- 跪求!!!动态添加播放器的音乐地址!!!!!马上就要答辩了,可是我的这项功能还没有实现!!!!
- 数据库连接出现问题~~求高手
http://richardneililagan.com/2010/09/mapping-parent-child-relationships-in-nhibernate/
或
http://www.codeproject.com/Articles/472019/Object-Relational-Mapping-ORM-u
不过先看看你给的文章