我有以下实体框架代码优先模型:
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 -> Favorites 创建一个 1-M 关系,为 Member -> Favorites 创建一个 1-M 关系
在我的控制器操作中,我从保存在几页后面的 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);
}
}
运行此代码时,我在此行收到 NullReference 错误newMember.Favorites.Add(test);
不完全确定为什么,任何帮助将不胜感激。
编辑:在 VS 中进行故障排除时,我能找到的唯一空属性是Favorites
innewMember
和Member
intest