我正在尝试做和这个主题中相同的事情,但是我遇到了错误:
错误出现在
编辑:
修复这个错误后,又出现了一个新的错误。我认为这与上面的错误无关,但我不想发送无关的贴子。
错误信息:
'System.Collections.Generic.IEnumerable'不包含定义为“Add”的方法,也没有接受类型为“System.Collections.Generic.IEnumerable”的第一个参数的扩展方法“Add”(是否缺少使用指令或程序集引用?)
这是我的代码:
[HttpPost]
public ActionResult Create(ANIME anime)
{
var db = new MainDatabaseEntities();
var newanime = new ANIME
{
ID_AN = anime.ID_AN,
TITLE_OR = anime.TITLE_OR,
TITLE_EN = anime.TITLE_EN,
GENRES = new List<GENRES>()
};
foreach (var selectedAnime in anime.GENRES.Where(c => c.isSelected))
{
var genre = new GENRES { ID_GE = selectedAnime.ID_GE };
db.GENRES.Attach(genre);
newanime.GENRES.Add(genre); <--- this is the error line
}
db.ANIME.Add(newanime);
db.SaveChanges();
return RedirectToAction("Index");
}
动漫:
public partial class ANIME
{
public int ID_AN { get; set; }
public string TITLE_OR { get; set; }
public string TITLE_EN { get; set; }
public virtual IEnumerable<GENRES> GENRES { get; set; }
}
类型:
public partial class GENRES
{
public int ID_GE { get; set; }
public string GENRE { get; set; }
public bool isSelected { get; set; }
public virtual ICollection<ANIME> ANIME { get; set; }
}
错误出现在
HttpPost
中的newanime.GENRES.Add(genre)
这一行。我已经在所有的模型和控制器中添加了using System.Linq
,但是没有起到作用。有什么想法可以解决这个问题吗?编辑:
修复这个错误后,又出现了一个新的错误。我认为这与上面的错误无关,但我不想发送无关的贴子。
错误信息:
相关代码:不能在LINQ to Entities查询中构建实体或复杂类型'MainDatabaseModel.GENRES'。
public ActionResult Create()
{
var db = new MainDatabaseEntities();
var viewModel = new ANIME
{
GENRES = db.GENRES.Select(c => new GENRES
{
ID_GE = c.ID_GE,
GENRE = c.GENRE,
isSelected = false
}).ToList()
};
return View(viewModel);
}
Linq
中也没有.Add
方法;IEnumerable
是不可修改的。 - Dan PuzeyIEnumerable
作为 _视图模型_。你正在使用你的 Entity Framework 实体 作为视图模型(我在之前的一个问题中警告过你),你不能将那个逻辑应用于模型,因为需要ICollection
来导航属性是一对多关系的模型。只需将IEnumerable<T>
更改为ICollection<T>
即可。 - CodeCaster