我能从Fluent NHibernate中得到什么?
本文关键字:什么 NHibernate Fluent | 更新日期: 2023-09-27 18:06:54
一般来说,我是Fluent NHibernate和ORM工具的新手。我不太确定在这种情况下我应该从这个工具中得到什么。我有基金,控股和资产表与相应的对象。基金对象有一个控股的集合,每个控股都有一个资产。当我把基金存起来时,我希望以后的持股和资产也能存起来。
我似乎有这种情况发生,然而,我似乎试图插入一个新的记录到每个表,而不是更新现有的。我在数据库中有唯一的约束,所以保存失败。我是否需要查询现有的持有和资产来更新它们?
我确信这个问题已经有了答案,但是我不知道如何去寻找它。
提前感谢。
下面的相关映射public FundMap()
{
...
HasMany(x => x._holdings)
.Cascade.All();
}
public HoldingMap()
{
...
References(x => x._fund);
References(x => x._asset).Cascade.SaveUpdate();
...
}
您不需要查询现有的集合,这不是必需的。你可以创建一个新对象,并给它与数据库中对象相同的键,调用SaveOrUpdate(),它将更新数据库。
您通常查询数据库的原因是因为您在键以外的其他条件下进行搜索。这还会获取与该实体关联的关系对象。在你的例子中,一个"基金"拥有许多"持股"。
例如,如果数据库中有一个键为1的现有基金和一个与该基金相关联的Holding,并且该特定的Holding的键为1,则可以执行以下操作
var fund = new Fund{
ID = 1,
Name = "YourNewName",
Holdings = new List<Holding>{
new Holding{
ID = 1
Description = "NewHoldingDescription"
}
}
}
//and then perform a SaveOrUpdate() on the fund, it should update the entries in the database