2017-01-06 12 views
2

Entity Frameworkモデルデザイナでnull可能な外部キーを実装しようとしました。しかしEntity Frameworkモデル - 最初のNull可能な外部キー

public Nullable<int> SenderId { get; set; } 

、ときに次のように私のクラスはSenderプロパティとそれに応じて生成される設定は、正しいはず

EF Model

:問題の

表には、次のようになりますContext.Database.Create();を呼び出すと、作成されたデータベースSenderIdプロパティはNULL可能ではありません。

データベースで列の型をnull可能に手動で変更すると、モデルとデータベースが異なるというEF内でエラーが発生します。

アドバイスはありますか?

ありがとうございます!

+1

デザイナーで「モデルからデータベースを生成する」ようにしてください。データベース用のDDLスクリプトを生成します。フィールドに正しいタイプがあるかどうかを確認してください。それでも誤ったタイプが表示される場合。関連付けとフィールドを削除し、関連付けを再度作成してみてください。自動的にフィールドを作成する必要があります。 –

+0

いいえ、スクリプトは(何らかの理由で)データベースを正しく生成します。 私のコード内でOrderテーブルを使用しようとすると、EntityCommandCompilationExceptionがスローされます。これは、エンティティモデルの列がNULL値をサポートしていないためです。 –

答えて

0

さて、数時間騒がれた後、私は最終的に問題の原因になった:私のエンティティモデルのedmxファイル。

Visual Studioエンティティモデルデザイナーは、その列がNULL可能である(またはむしろNULLに設定できる)ことを示していましたが、.edmxファイル自体がこれらの変更を適用していないことがわかりました。エディタ内で手動で.edmxファイルを変更しました。

<Property Name="SenderId" Type="Int32" Nullable="true" /> 

のNullableプロパティは、もともとところで... falseに設定した関連付けはどちらか保存されませんでした、私は外部キー以来、テキストエディタ内0..1関連を自分で設定する必要がありました現在nullに設定可能です。とにかく助けていただきありがとうございます。

2

が、私はこのようなあなたのSenderIDを設定する

てみてくださいあなたのような同じ問題を抱えていた:

public int? SenderId { get; set; } 

をもしあなたが、あなたは上記のようにプロパティを変更し、データベースを手動で変更することができ、このdoesntのヘルプ、あなたがそれをした後。違いはありません。

+0

私の質問に示すように、クラスは正しく作成されます(プロパティはNullableとして作成されます)。問題は、プロパティが正しいにもかかわらず、動作しませんでした...しかし、とにかく感謝! –

関連する問題