1

多対多の関係を保存することに問題があります。コードを実行すると、マッピング テーブル "dbo.UserTown" にデータが保存されていません。

ユーザーを町のリストで保存する関数を作成しました

  public void Save(User user)
    {
        context.User.Add(user);
        context.SaveChanges();
    }

私のクラスは次のようなものです:

public class User
{
    public long UserId { get; set; }
    public String Nickname { get; set; }
    [InverseProperty("Residents")]
    public virtual ICollection<Town> Residencies { get; set; }
}

public class Town
{
    public long TownId { get; set; }
    public String Name { get; set; }
    public virtual ICollection<User> Residents { get; set; }
}
4

3 に答える 3

0

多対多の関係を処理するために新しいエンティティを作成する必要はありません。まず、を削除し[InverseProperty("Residents")]ます。冗長です。あなたのモデルはそれがなくても大丈夫です。

[InverseProperty("Entity")]エンティティ間に複数の「対多」の関係がある場合に必要です。

問題は、関連データをエンティティに追加する方法にあると思います。この記事はあなたを助けると思います。

于 2012-05-22T15:47:08.620 に答える
0

マッピングクラスが必要です

public class User
{
  public long UserId { get; set; }
  public String Nickname { get; set; }
  public virtual ICollection<TownResidents> TownResidents { get; set; }
}

public class Town
{
  public long TownId { get; set; }
  public String Name { get; set; }
  public virtual ICollection<TownResidents> TownResidents { get; set; }
}

public class TownResidents
{
  public long TownId { get; set; }
  public long UserId { get; set; }

  public virtual Town { get; set; } 
  public virtual User { get; set; } 
}
于 2012-05-22T15:25:21.060 に答える
0

スタンジですが、翌日発見しました:問題を解決するための手順を実行しました:

  1. コーヒーの新鮮なマグカップ:)
  2. すべてのキャッシュインをクリアする(すべてのプロジェクトをクリアする)、Visual Studioを確実に閉じる
  3. データベースを削除しました
  4. VSを開いてプロジェクトを実行=>このステップでデータベースが作成されました
  5. 重要: コードを変更していません
  6. プロジェクトを 2 回実行して、ダミー データをシステムにシードします。
  7. テーブルにデータが入力されました。

本物のヘッドスクラッチャー...

于 2012-05-23T13:38:25.030 に答える