我有以下实体框架代码的第一个模型:
public class Member {
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public String CardNumber { get; set; }
//Foreign Key
public virtual ICollection<Favorite> Favorites { get; set; }
[NotMapped]
public List<SelectListItem> FavoriteTypes { get; set; }
public Member() {
MembersDB db = new MembersDB();
FavoriteTypes = new List<SelectListItem>();
FavoriteTypes.AddRange(db.FavoriteTypes.ToList().Select(f => new SelectListItem { Text = f.Value, Value = f.ID.ToString() }));
}
}
public class FavoriteType {
public int ID { get; set; }
public string Value { get; set; }
}
public class Favorite {
public int ID { get; set; }
public String Value { get; set; }
//Foreign Keys
public virtual FavoriteType FavoriteType { get; set; }
public virtual Member Member { get; set; }
}
这为FavoriteTypes创建了1-M关系 - &gt;会员的收藏夹和1-M关系 - &gt;收藏夹
在我的控制器操作中,我从几个页面保存的Session中检索大部分会员的信息,除了下面收集的收藏夹信息。然后我收集ID和输入值列表以添加到我的新成员中:
[HttpPost]
public ActionResult AddFavs(List<int> ID, List<string> Value) {
MembersDB db = new MembersDB();
Member newMember = (Member)Session["member"];
if (ID != null && Value != null)
{
for (int i = 0; i < ID.Count(); i++)
{
int currentID = ID[i];
var test = new Favorite();
test.FavoriteType = db.FavoriteTypes.Where(f => f.ID == currentID).FirstOrDefault();
test.Value = Value[i];
newMember.Favorites.Add(test);
}
}
运行此代码时,我在此行newMember.Favorites.Add(test);
不完全确定原因,任何帮助都会受到赞赏。
编辑:在VS中排除故障时,我可以找到的Favorites
newMember
和Member
中的test
答案 0 :(得分:2)
ICollection<Favorite> Favorites
为null
,因此您无法向其中添加项目。您应该在模型的构造函数中实例化它:
public Member()
{
Favorites = new List<Favorite>();
// ...
}
现在它是一个空集合,你可以添加项目。