4

ここでは、データベーススキーマを変更して、自分のテーブルのPKを変更して、古いPKに関連するすべてを削除しました。別のテーブル)。エンティティフレームワークでsavechanges()を使用しているときに無効な列名

I新しいSaveChangesメソッドを使用してエンティティ()メソッドは

EX =挿入したときに、私はこの例外を持っているが{「エントリを更新中にエラーが発生しました。詳細については、内部例外を参照してください。」}

と内側例外が

のInnerException = {ある "無効な列名 'audit_idで'。"}

Audit_IDは古いPKです。

私はこの "Invalid column name" when trying to insert data into database using SQL

このInvalid column name when trying to add an entity to a database using DbContext

このInvalid column name after mapping

と何も私は私の全体のEDMXを削除し、新しいものを作成したとしても、それはうまくいきませんでしたので、私の問題を解決を試してみました。

PS:私は

+0

'savechanges()' ef query'も表示できますか? – Sampath

+0

通常、古いPKを削除し、新しいPKを追加するには、DBの最初のアプローチでモデルの更新が必要です。古い 'Audit_ID' PKのすべてのFK参照を削除した場合、モデルクラス内で' KeyAttribute'を設定してデータベースセットに新しいPKを割り当てることができます。 –

答えて

1

実際に問題がSQLサーバーデータベースに存在していたため、解決策はありませんでした。

SQLプロファイラを実行してプログラムの挿入ステートメントを実行したとき、エラーが以前の列名を持つテーブルのトリガーの1つにあり、新しいPKに変更され、最終的に機能していました。

誰かが同様の問題を抱えている場合は、上記のリンクが役立つかもしれません。また、問題が実際にデータベースサーバーで発生していないかどうかを確認する必要があります。

0

削除/(それはモデルのブラウザビューを見ることで除去されることを確認してください)EFモデルからテーブルを削除し、データベースの最初のアプローチを使用しています。

ソリューションを再構築します。

テーブルが保存されていることを確認してください。正しい文字列を参照していることを確認してください。

更新モデルツールを使用してテーブルを再度追加します。

EDIT:よく質問を読む

+0

仲間は働かなかったが、実際には事態を悪化させた – SaadK

+0

これはほとんど起こりそうもない。あなたはまだefで外部キー接続を持っていますか? – Karlta05

+0

_How_これは状況を悪化させましたか? – Luke

0

独自のModelKeyBuilderクラスを作成します。

class MyOwnModelKeyBuilder 
{ 

    public static void BuildCompositeKeys(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<YourEntity>() 
     .Ignore(x=>x.Audit_ID) 
     .HasKey(x=>x.NewPrimaryKey); 
    } 
} 

そして、あなたのModel.Context.csで

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    MyOwnModelKeyBuilder.BuildCompositeKeys(modelBuilder); 
} 

私はテーブルの構造を知らないが、それはあなたを助けるかもしれないので、それはまっすぐに解決できない場合があります。

+0

"Audit_iDの定義なし" – SaadK

関連する問題