如何防止NHibernate为引用对象创建重复记录

如何防止NHibernate为引用对象创建重复记录,nhibernate,Nhibernate,使用NHibernate将对象保存到数据库时遇到问题 我的代码如下所示: Image image = new Image { Url = 'test.jpg' }; Product product1 = new Product { Name = 'MyProduct', Image = image }; Product product2 = new Product { Name = 'MyProduct2', Image = image }; MySession.Save(product1);

使用NHibernate将对象保存到数据库时遇到问题

我的代码如下所示:

Image image = new Image { Url = 'test.jpg' };
Product product1 = new Product { Name = 'MyProduct', Image = image };
Product product2 = new Product { Name = 'MyProduct2', Image = image };

MySession.Save(product1); // This also creates an Image record
MySession.Save(product2); // This creates another Image record even tho the data is exactly the same
我想防止图像被创建两次。
是否有一个标准的NHibernate解决方案,或者我必须为Product类创建一个自定义的Save()方法?

经过长时间的搜索,我找到了一些关于为实体类实现Equals()方法的信息,以便NHibernate可以对它们进行比较。
也许这就是我问题的解决方案。

Product类上的Fluent映射是:Map(x=>x.Name);引用(x=>x.Image).Cascade.SaveUpdate();您是否在没有自动初始化的情况下尝试过此操作?product1.Image=Image