0

私が何を間違ってドーピングしているのかわからない:

私のコントローラーで:

 [HttpPost]
 public ActionResult SaveRecommendedUserDetails(RecommendAFriendViewModel model)
 {
    //List<Entities.Group.Group> entityGroups = new List<Entities.Group.Group>();

        foreach (var group in model.Groups)
        {
          Entities.Group.Group entityGroup = new Entities.Group.Group();
          entityGroup.GroupId = group.GroupId;
          //entityGroups.Add(entityGroup);
          recommendedUser.Groups.Add(entityGroup); //groups in recommendeduser is already of type ICollection.
        }
 }

RecommendAFriendViewModel モデル グループ プロパティ:

 public IEnumerable<DataModels.Group.GroupDataModel> Groups { get; set; }

RecommendedUser エンティティ グループ プロパティ:

  public virtual ICollection<Group.Group> Groups { get; set; }

私が得る 2 つの赤い線で: 「int」から「Zinc.Entities.Group.Group」に変換できません
。 ' 無効な引数があります

私が間違っていることを教えてください。ありがとう

4

2 に答える 2

0

ループEntities.Group.Groupの反復ごとに新しいオブジェクトをインスタンス化していません。foreachあなたがしているのは、最後のentityGroup.GroupIdプロパティセットを上書きしてから、同じエンティティオブジェクトが以前の反復から既にそこにあるときにコレクションに追加しようとすることだけです。

entityGroup 変数宣言をifステートメント内に移動すると、問題が解決するはずです。

if (!recommendedUser.Groups.Any(x => x.GroupId == group.GroupId))
{
  Entities.Group.Group entityGroup = new Entities.Group.Group(); // here
  entityGroup.GroupId = group.GroupId;
  entityGroups.Add(entityGroup); //get red line here
}
于 2013-03-28T08:47:53.973 に答える
0

entityGroups変数を初期化していません。変数を使用する前に、変数が割り当てられていることを確認する必要があります。また、あなたのスコープをループentityGroupに移動することもできます:foreach

[HttpPost]
public ActionResult SaveRecommendedUserDetails(RecommendAFriendViewModel model)
{
    var entityGroups = new List<Entities.Group.Group>();
    foreach (var group in model.Groups)
    {
        if (!recommendedUser.Groups.Any(x => x.GroupId == group.GroupId))
        {
            var entityGroup = new Entities.Group.Group();
            entityGroup.GroupId = group.GroupId;
            entityGroups.Add(entityGroup.GroupId);
        }
    }
    recommendedUser.Groups.Add(entityGroups);
}
于 2013-03-28T08:46:57.117 に答える