我试图像在这个线程中做同样的事情,但我得到错误:
"System.Collections.Generic.IEnumerable"不包含"添加",并没有扩展方法"添加"接受型"System.Collections.Generic.IEnumerable"的第一个参数的定义可以找到(是否缺少using指令或汇编参考?)
这是我的代码:
[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() }; 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"); }
ANIME:
public partial class ANIME { public int ID_AN { get; set; } public string TITLE_OR { get; set; } public string TITLE_EN { get; set; } public virtual IEnumerableGENRES { get; set; } }
流派:
public partial class GENRES { public int ID_GE { get; set; } public string GENRE { get; set; } public bool isSelected { get; set; } public virtual ICollectionANIME { get; set; } }
错误在于行newanime.GENRES.Add(genre)
中HttpPost
.我添加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); }
Alberto Sola.. 8
您有一个IEnumerable属性,您正在使用List进行初始化.List类实现IEnumerable接口.
当你调用这样的东西时:
IEnumerable myList = new List();
你说你想为你的对象提供IEnumerable
在List
类中继承的接口的功能.在这种情况下,该方法Add
不是IEnumerable接口的一部分,因为它只是List类的一个方法,并且您有该异常.
你有那么改变你的属性的类型,从IEnumerable
到IList
(约IList的更多信息点击这里).这样,Add
不会抛出有关方法的异常.
试试这个:
public partial class ANIME { public int ID_AN { get; set; } public string TITLE_OR { get; set; } public string TITLE_EN { get; set; } public virtual ICollection<GENRES> GENRES { get; set; } // Use ICollection here }
您有一个IEnumerable属性,您正在使用List进行初始化.List类实现IEnumerable接口.
当你调用这样的东西时:
IEnumerable myList = new List<MyType>();
你说你想为你的对象提供IEnumerable
在List
类中继承的接口的功能.在这种情况下,该方法Add
不是IEnumerable接口的一部分,因为它只是List类的一个方法,并且您有该异常.
你有那么改变你的属性的类型,从IEnumerable<YourType>
到IList<YourType>
(约IList的更多信息点击这里).这样,Add
不会抛出有关方法的异常.