エフェクト(EFテストツール)と計算カラムの使用

c#-4.0 database effort entity-framework integration-testing

質問

DBに直接アクセスするいくつかの統合テストがあります - テストの前提条件オブジェクトを作成する - テストを実行した後、後でクリーンアップする - しかし、私はメモリ内で同じアプローチを試してみることにしました。

私は自分のプロジェクトでEffortを使っています。とても簡単に動作します。しかし、私は試していた問題を打ちましたが、解決することはできませんでした。

テストの前提条件として、ダミーデータでいっぱいにする必要があるテーブルの1つに、計算列(nvarchar、nullではない)が含まれています。テストの範囲については、実際にはその列の値は気にしませんが、ダミーデータを挿入しようとしてもデータは無視され、エラーが発生します。

"Column 'x' cannot be null. Error code: GenericError"

私のテストでは、実際のコードで使用されているのと同じedmxファイルを使用しています。これは私がedmxのコピーを絶えず更新することを妨げます。

列がNULL可能な非計算列であるように、実行時にedmxを更新するようにテストを強制する方法がありますか? [OnModelCreatingをオーバーライドする]、またはこのエラーを停止するためにデフォルト値を挿入する方法がありますか? [SaveChangesをオーバーライドする]

私は現在、以下を試しています:

  • .Add()の代わりに.Attach()を使用してオブジェクトをアタッチする
  • 追加後にEntityStateを変更しないで設定する
  • Entry.OriginalValuesを介して値を強制する[このエンティティは追加状態です]

編集:

私はOnModelCreatingメソッドをオーバーライドしようとしましたが、これはDB-Firstであるため無駄です。

"Column 'x' cannot be null. Error code: GenericError"

人気のある回答

XMLエディタでEDMXファイルを開き、StorageModelsの下にあるエンティティを見つけて、列定義StoreGeneratedPattern="Computed"追加します。

しかし、そのテーブルを更新または削除して追加すると、この変更が失われます。実際にあなたはedmxファイルを更新し、 StoreGeneratedPattern="Computed"を必要に応じて追加するコンソールアプリを書くことができ、それらのアプリをスタジオのイベントをプレビルドするために追加することができます。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ