4

まず、私は MVC と EF の完全な初心者だと言わざるを得ません。Database First を使用してモデルを作成し、2 つのテーブル ユーザー ---> ユーザーの詳細 (関連) を選択しました。

モデルは正常に生成され、正常に検証されます。単純なデータ アクセスを試みると、これも正常に機能します。

これをMVC 4スキャフォールディングと選択した新しいコントローラー/ EFフレームワークの追加/更新/削除などと組み合わせようとすると、ユーザーモデル+ユーザーコンテキストに入れ、自動生成されたモデルにキーがないと文句を言います。

エンティティ タイプ - 「ユーザー」にはキーがありません。モデルを開くと、実際にキーがあり、エンティティ キーのチェック ボックスがオンになっていることがわかり、プロパティの横に小さな「キー」記号が表示されます。

User.cs を手動で開き、キーの横に [Key] 属性を配置することだけが機能する唯一の解決策を見てきました。これはすべてのキーですか?私は何か間違ったことをしていますか?

User と UserDetails の両方の cs ファイルにキーを追加したので、それは不平を言うのをやめ、今は不平を言い始めます:

ユーザーのメタデータを取得できません。User と UserDetail の間の関連付けの原則的な終了を判別できません。この関連付けの主な目的は、リレーションシップ fluent API またはデータ アノテーションのいずれかを使用して明示的に構成する必要があります。

2 つの質問があります。

  1. このように自動生成されたファイルをいじる必要がありますか? または私は何か間違ったことをしていますか?2/ この 2 番目の問題を解決するにはどうすればよいですか?

このような問題が次々と発生するべきではないので、何かがおかしいと感じますか?

4

2 に答える 2

1

同様の「タイプのメタデータを取得できません...」というエラーが発生しました。関係がUsersあり、UserDetails正しく実装されていると仮定すると、次のことを試すことができます。これは、エラーを解決するために私が行ったことです。

Web.configファイル(ソリューションエクスプローラーの最後にあるルートファイル)nameで、接続文字列をこれから変更します...

<connectionStrings>
 <add name="YourContext" connectionString="Data Source=|DataDirectory|YourNamespace.Models.YourDBName.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

...これに:

<connectionStrings>
 <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|YourNamespace.Models.YourDBName.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

変更するだけnameで、他には何もありません。次に、ソリューションを構築して実行してみてください。ロングショットかもしれませんが、それは私にとってはうまくいきました。私が同様の質問をしたここからの詳細情報。

于 2013-02-07T20:29:54.787 に答える