0

後不返回自動生成的值,我有以下實體NHibernate的插入

public class Entity{ 
    public virtual int Id { get; set; } 
    public virtual DateTime CreatedDateTime { get; protected set; } 
} 

,我有以下NHibernate的流暢映射

public class EntityMap : ClassMap<Entity> 
{ 
    public Entity() 
    { 
     Id(x => x.Id); 
     Map(x => x.CreatedDateTime) 
      .Not.Nullable() 
      .Default("GETUTCDATE()") 
      .ReadOnly(); 
    } 
} 

當我保存這個實體(與_session.Persist(entity))到數據庫中,它會更新生成的ID,但它不更新CreatedDateTime值,儘管CreatedDateTime在數據庫中正確生成。有什麼辦法可以配置這個實體在插入後還返回自動生成的值嗎?

感謝

回答

1

爲您CreatedDateTime財產的EntityMap映射,您可以使用生成的屬性作爲IN-

Map(x => x.CreatedDateTime).Generated.Always(); 

這將檢索這是你的錶行中所產生的UTC日期。

您的示例代碼看起來像您的實體表的某種形式的id生成器。目前還不清楚您在哪裏生成您的Id字段(在客戶端或數據庫中)。如果您在數據庫中生成您的ID,您還可以修改EntityMap從數據庫 -

Id(x => x.Id).GeneratedBy.Identity(); 

獲得的ID將加載默認初始化實體對象與數據庫生成的標識,當你保存對象(假設你從數據庫端生成它)。

希望有所幫助。

+0

感謝您的幫助。我會在週一工作。 – kord

+0

Map(x => x.CreatedDateTime).Generated.Always() - > Works – kord