2013-07-18 54 views
0

我有一个应用程序,我使用Fluent NHibernate与SQLite数据库交谈并保存对象。当我运行下面的代码时,所有新项目都会以空Guid(这是预期的)进入循环,但是一旦SaveOrUpdate函数运行,所有新项目都会收到相同的Guid。我添加了session.flush()以查看是否可以刷新会话并强制一个唯一的Guid ...但不是骰子。创建重复的GUID - 流利的NHibernate

任何帮助,将不胜感激!

我的映射文件

Id(x => x.Id).GeneratedBy.GuidComb().Unique(); 

守则

public void SaveItems() 
    { 
     using (ISession session = SessionProvider.OpenSession()) 
     { 
      using (var transaction = session.BeginTransaction()) 
      { 
       foreach (Item item in this.Items) 
       { 
        session.SaveOrUpdate(item); 
        session.Flush(); 
       } 

       transaction.Commit(); 
      } 
     } 
    } 
+4

是否确定那些Items集合的成员是真正独立的对象,而不仅仅是对同一个实例的多个引用? –

+0

男人......你完全正确。就是这样。简单的问题,但我从来没有注意到:) –

回答

1

本来这是一个评论,但由于它被证明是正确的,应该是一个答案,而不是:

确认Items集合的成员是真正独立的对象,并且n不只是对同一个实例的多个引用。