2009-08-26 9 views
3

NHibernateで何か変わっています。私は選択でき、挿入することができます。しかし、私はMySqlに対してやり直すことはできません。NHibernateとMySqlが挿入され、選択されています。更新しません。

:ここ

は、自分のドメインクラスは流暢マッピング

ここ
public class UserAccountMap : ClassMap<UserAccount> 
{ 
    public UserAccountMap() 
    { 
     Table("UserAccount"); 
     Id(x => x.Id); 
     Map(x => x.UserName); 
     Map(x => x.Password); 
     Map(x => x.FirstName); 
     Map(x => x.LastName); 
     Map(x => x.Phone); 
     Map(x => x.DeletedDate); 
     Map(x => x.Enabled); 
    } 
} 

は私が私のセッションファクトリー

 var dbconfig = MySQLConfiguration 
      .Standard 
      .ShowSql() 
      .ConnectionString(a => a.FromAppSetting("MySqlConnStr")); 

     FluentConfiguration config = Fluently.Configure() 
      .Database(dbconfig) 
      .Mappings(m => 
      { 
       var mapping = m.FluentMappings.AddFromAssemblyOf<TransactionDetail>(); 
       mapping.ExportTo(mappingdir); 
      }); 

を作成していますし、これは私のNHibernateのコードがどのようにある

public class UserAccount 
{ 
    public virtual int Id { get; set; } 
    public virtual string UserName { get; set; } 
    public virtual string Password { get; set; } 
    public virtual bool Enabled { get; set; } 

    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
    public virtual string Phone { get; set; } 

    public virtual DateTime? DeletedDate { get; set; } 
    public virtual UserAccount DeletedBy { get; set; } 
} 

です

 using (var trans = Session.BeginTransaction()) 
     { 
      var user = GetById(userId); 
      user.Enabled = false; 
      user.DeletedDate = DateTime.Now; 
      user.UserName = "deleted_" + user.UserName; 
      user.Password = "--removed--"; 
      Session.Update(user); 
      trans.Commit(); 
     } 

例外はスローされていません。クエリは記録されません。何もない。

+0

NHProfilerでこれを実行しようとしましたか?少なくとも試用版をダウンロードできるはずです。これにより、生成されているSQLが表示されます。これは、私が困惑したときに、通常私を助けます。 –

+0

いいえ、それはおそらく私の次のステップです。私はShowSqlを有効にしているので、SQLが実行されているのがわかり、更新ステートメントは送信されません。個人的に私はSessionFactoryの問題があると思います。 –

+1

事は、Session.Updateがなくても、ユーザーは更新されるべきです。 GetByIdメソッドに特別なものがありますか? :D – sirrocco

答えて

0

自動フラッシュが設定されていますか?あなたはあなたのセッション上のトランザクションに対してコミットを呼びますが、そのセッションではフラッシュしません。

+0

私は信じています。問題は、私が使用していたMySQLプロバイダにありました。私はそれにパッチを当て、その後それは働いた。 –

関連する問題