1

私は今週 (v5) まで EF を使用していませんでしたが、現在、いくつかのデータベースの変更を行っています。

NVARCHAR Country フィールドを削除し、Country テーブルの Id 列への外部キーである CountryId int フィールドに置き換えました。

ALTER TABLE [dbo].[UserProfile]  WITH CHECK ADD  CONSTRAINT [FK_UserProfile_Countries]   FOREIGN KEY([CountryId])
REFERENCES [dbo].[Countries] ([Id])

VS2012 でモデルを更新すると、予想外のことが起こります。私が削除したフィールドのエラーを報告しています:

エラー 11010: 関連付けの終了 '国' がマップされていません。

そして、正しくないように見えるモデルに 2 つの仮想フィールドを追加しました。

public partial class UserProfile
{
    public int UserId { get; set; }
    ...
    public int CountryId { get; set; }

    public virtual Country Country { get; set; }
    public virtual Country Country1 { get; set; }
}

デザイナーにバグがあり、.tt ファイルで「Run Custom Tool」を手動で実行するとこれが修正されることを読みましたが、機能していないようです。

誰かがこれを見たり解決したりしましたか?

4

2 に答える 2

0

私がデータベースで多くの時間を費やしてきた記録のために、最初にそれをすべて捨てて、代わりにコードを書いています...

于 2012-10-11T18:48:27.860 に答える
0

テストのためだけに、モデルをゼロから完全に再作成しました。すべてのファイルを削除しました。モデルをゼロから再作成した後、Country.cs ファイルを調べて、私の人生が怖くなりました...私の仮定が正しければ。クラスは次のようになりました。

public partial class Country
{
    public Country()
    {
        this.UserProfiles = new HashSet<UserProfile>();
    }

    public int Id { get; set; }
    public string CountryCode { get; set; }
    public string CountryName { get; set; }

    public virtual ICollection<UserProfile> UserProfiles { get; set; }
}

これについての私の仮定がそのままであるとすれば、これはパフォーマンスの観点から見ると恐ろしく見えます。そのクラスを見ると、たとえば、米国の行を取得すると、国として米国を含むすべてのプロファイルも読み込まれるように見えます...または私は気が狂っていますか? デザイナーは今日私の頭を揚げました...

于 2012-10-11T17:39:26.913 に答える