私はMySqlの上に、城のアクティブなレコードを使用する非常に単純なasp.net mvc Webアプリケーションを持っています。キャッスルアクティブレコードでは、セッションスコープを終了する必要があるときにCreateAndFlushを使用する必要があるのはなぜですか?
アプリケーションのユーザーは、エンティティのいずれかのプライマリキーを手動で定義する必要があります(デフォルトはオートナンバーでした)。私は考えていませんが、私は[PrimaryKey]
から[PrimaryKey (PrimaryKeyType.Assigned)]
に単純に変更し、データベーススキーマを修正します(これは問題のポイントではありませんが、問題のポイントではありません)。
OnBeginRequestでリクエストごとにセッションスコープを作成し、hereと同じコードを使用してOnEndRequestを作成しても、新しいエンティティは.Create()
メソッドを呼び出すとデータベースに永続化されることはありません。私が[Primary Key]
属性を変更する前に、同じコードが正常に機能しました。
Create()の代わりに.CreateAndFlush()を呼び出すと、エンティティはdbに永続化されます。私は、セッションスコープが終了すると、Create()の変更が維持されると考えました。なぜ彼らは...私はこれがどう動くべきか誤解していますか?
ああ、忘れることが変更しないでください。しかし、私の主キーは、オブジェクトの新しいインスタンスのデフォルト値としてゼロを持つIntです。 ARは0が空であることを知っていますか?私は '[PrimaryKey(PrimaryKeyType.Assigned、UnsavedValue =" 0 ")]'を試みましたが、違いはありませんでした。 Thオブジェクトはまだdbに保存されません。 – simon
私は自分のコードで間違いを犯しました。保存されていない値についての情報は+1、非常に便利でした。 – simon