我是MVC的新手并且正在努力实现ViewModel来查询多个表。最初我的设置工作完美但现在重新加载项目我收到编译错误,如下所示:
Cannot implicitly convert type 'System.Collections.Generic.List<CATEGORY>' to 'System.Collections.Generic.List<TestProject.Models.CATEGORY>'
ViewModel代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace TestProject.Models
{
public class COMPCATEGORY
{
public List<COMP> Comp { get; set; }
public List<CATEGORY> Category { get; set; }
}
}
控制器代码:
namespace TestProject.Controllers
{
public class COMPsController : Controller
{
private mattbeaneyEntities1 db = new mattbeaneyEntities1();
// GET: COMPs
public ActionResult Index()
{
COMPCATEGORY viewModel = new COMPCATEGORY();
viewModel.Category = db.CATEGORies.ToList();
viewModel.Comp = db.COMPs.ToList();
return View(viewModel);
}
数据库上下文代码:
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class mattbeaneyEntities1 : DbContext
{
public mattbeaneyEntities1()
: base("name=mattbeaneyEntities1")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<CATEGORY> CATEGORies { get; set; }
public virtual DbSet<COMP> COMPs { get; set; }
}
答案 0 :(得分:2)
由于错误表明它有两个类型同名的问题,当我们只期待一个。名称空间是我们的线索:
Cannot implicitly convert type 'System.Collections.Generic.List<CATEGORY>' to 'System.Collections.Generic.List<TestProject.Models.CATEGORY>'
在这种情况下,通常我会检查几件事情:
首先:是否有两个共享相同名称且属于不同命名空间的类?随着项目的发展,这很容易做到!
辅助:主项目命名空间是否已更改?有时由于一些重构,我们更改了项目名称,最后在bin文件夹中有两个.dll文件,这些文件包含我们所有类的副本 - 删除旧文件!