我有一个简单的域对象Movie
,带有以下构造函数:
public Movie(string title, int year = 0, Genre genre = Genre.None, int length = 0, IEnumerable<string> actors = null) { ... }
没有ID参数,因为无法预先了解ID的内容。 Movie
确实有int Id
属性。
此对象将发送到我的MovieRepository
,它使用NHibernate。存储库有一种添加电影的方法:void AddMovie(Movie movie) { ... }
。
假设我想在插入对象后与对象进行交互,可能是为了显示数据或更改属性。我需要设置Id
属性的对象,或者需要知道数据库生成的ID。
我应该更改AddMovie
方法以返回ID设置的相同电影,还是应该返回结果ID值?或许别的什么?
答案 0 :(得分:5)
调用Session.Save()
或Session.SaveOrUpdate()
后,id
将返回给您以供将来查询。
另见question。
答案 1 :(得分:0)
我建议更改AddMovie
以返回新分配的Movie
{/ p}。
由于Session.SaveOrUpdate()
方法已经返回带有Id的对象,因此非常简单。