0

後に自動生成された値を返しません。私は、次のエンティティNHibernateのは、インサート

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

を持っていると私は(_session.Persist(entity)で)このエンティティを保存すると、私は、次のNHibernateの流暢なマッピング

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

を持っていますCreatedDateTimeはデータベース内で正しく生成されますが、生成されたIDは更新されますが、CreatedDateTime値は更新されません。挿入後に自動生成された値も返すようにこのエンティティを設定する方法はありますか?

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

IN-これはあなたの表の行に生成されたUTCの日付を取得しますようごCreatedDateTimeプロパティのためのあなたのEntityMapマッピング用

おかげ

答えて

1

は、あなたが生成されたプロパティを使用することができます。

サンプルコードは、エンティティテーブル用のIDジェネレータのようなものです。 Idフィールドをどこに生成しているのかは明確にはっきりしません(クライアント上またはデータベース上)。あなたがデータベースにあなたのIDを生成している場合は、データベース -

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

からIDを取得するために、あなたのEntityMapを変更することができ、あなたのデフォルトを使用すると、オブジェクトを保存するときにアイデンティティを生成したデータベース(とEntityオブジェクトを初期化しロードすることそれをデータベース側から生成すると仮定します)。

希望に役立ちます。

+0

ありがとうございました。私は月曜日に仕事に挑戦します。 – kord

+0

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

関連する問題