不包含“Add”的定义。

18 浏览
0 Comments

不包含“Add”的定义。

我正在尝试做与这个主题相同的事情,但是我遇到了一个错误:

\'System.Collections.Generic.IEnumerable\'不包含定义为\'Add\'的内容,也找不到接受类型为\'System.Collections.Generic.IEnumerable\'的第一个参数的扩展方法\'Add\'(是否缺少了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 IEnumerable GENRES { get; set; }
}

GENRES:

public partial class GENRES
{
    public int ID_GE { get; set; }
    public string GENRE { get; set; }
    public bool isSelected { get; set; }
    public virtual ICollection 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);       
}

admin 更改状态以发布 2023年5月25日
0
0 Comments

尝试这个:

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 { get; set; } // Use ICollection here
}

0
0 Comments

你有一个IEnumerable属性,它是用List初始化的。List类实现了IEnumerable接口。

当你执行类似于这样的操作:

IEnumerable myList = new List();

你是在说你希望你的对象具有IEnumerable接口的功能,这些功能也继承于List类。在这种情况下,Add方法不是IEnumerable接口的一部分,因为它只是List类的一个方法,所以你会遇到该异常。

因此,你需要将属性的类型从IEnumerable更改为IList(有关IList的更多信息请单击此处)。这样,关于Add方法的异常就不会被抛出。

0