8

既存の DB を EF を使用するように変換したので、テーブルにマップするクラスを作成します。「iframeVideoId」と呼ばれる null 許容の int である新しい列を追加しました。でマッピングしました

public int? iframeVideoId { get; set; }

そのテーブルを検索すると、「」で爆発します

無効な列名のエラー

. これは単純なプロパティであり、インデックスではなく、他のテーブルに関連付けられていません。DB で名前を ' DisplayVideo' に変更し、null 不可にしようとしました。それから私は持っていました

[Column("DisplayVideo")]
public int iframeVideoId { get; set; }

DisplayVideo が有効な列ではないというエラーが表示されるようになりました。もちろん、正しいDBを指していることを再確認し、コードが指すことができるすべてのDBにこの列があることを確認しました。また、すべてをクリーンアップして再構築し、マシンを再起動しました。何が間違っている可能性がありますか? これは基本的なコラムであり、そこにあります。過去の経験から、型が一致しない場合 (両方とも int )、型間の変換の失敗に関連するエラーが発生することがわかっています。これは私にはまったく意味がありません。DB に直接マップするクラスを作成しているため、更新する edmx ファイルがありません。

追加するために、列を文字列に変更しましたが、違いはありません。これは単純な値を持つ新しい列であり、EF は存在しないと主張しています。

そして、列を別のテーブルに追加しました(明らかに最適ではありません)が、すぐに機能しました。EFで列を追加できないテーブルがある理由を知りたいのですが、

4

2 に答える 2

2

コピー/貼り付けの状況から、マッピング クラスにエラーが発生しました。ご覧のとおり、TranferredToEVPを 3 つの異なる列にマップしました。最後の列TranferredToGUIDで「無効な列名」を取得していましたが、 TranferredToGUID1を探していました。お役に立てれば。

this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToEVP");
this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToName");
this.Property(t => t.TransferredToEVP).HasColumnName("TransferredToGUID");
于 2014-06-02T21:55:28.687 に答える