【问题标题】:The entity Clients type is not part of the model for the current context实体客户端类型不是当前上下文模型的一部分
【发布时间】:2016-02-18 02:15:44
【问题描述】:

我目前正在使用 EF 执行 CRUD 选择记录并通过视图模型将其传递给视图。

表名和类名也是一样的,然后也无法理解为什么会出现这个错误,即使调试后也会出现同样的错误。

查看模型

namespace SingleVIewCrud.Models
{

public class tblClients
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}


public class VMtblClient
{

    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public  List<tblClients> tblClients { get; set; }

}
}

数据库集

public virtual DbSet<tblClients> Clients { get; set; }

动作

public ActionResult Home(int? id)
    {
        VMtblClient model = new VMtblClient();
        model.tblClients = db.Clients.ToList();    
        return View(model);
    }

修改代码 DbContext 类,

public partial class SampleEntities1 : DbContext
{
    public SampleEntities1()
        : base("name=SampleEntities1")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<tblClient> tblClients { get; set; }


    public virtual DbSet<tblClients> tblClient { get; set; }
}

动作

public ActionResult Home(int? id)
    {
        VMtblClients model = new VMtblClients();
        var test = db.tblClient.ToList();    
        return View(model);
    }

【问题讨论】:

  • 你在哪里创建对象db
  • SampleEntities1 db = new SampleEntities1();控制器下方
  • 能分享一下db连接字符串和dbcontext类吗?
  • 命名空间 SingleVIewCrud.Models { using System;使用 System.Data.Entity;使用 System.Data.Entity.Infrastructure;公共部分类 SampleEntities1 : DbContext { public SampleEntities1() : base("name=SampleEntities1") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } 公共虚拟 DbSet tblClients { 获取;放; } 公共虚拟 DbSet tblClientss { 获取;放; } } }
  • 连接字符串

标签: c# entity-framework asp.net-mvc-4 entity-framework-6


【解决方案1】:

在您的 SampleEntities1 DbContext 类中,没有“客户端”的定义。所以“db.Clients.ToList();”不应该工作。你从哪里提到“db”,它必须是dbcontext类,

试试这个代码,

VMtblClient model = new VMtblClient();

using(var context = new SingleVIewCrud.Models.SampleEntities1())
{ 
   model.tblClients = context.tblClient.ToList();
}

return View(model);

【讨论】:

  • 在操作中使用了代码但得到了同样的错误,清理了解决方案然后也是同样的错误。
  • 它必须是“tblClient”而不是“tblClients”,因为您指的是 tblClient 类。我编辑了答案。
  • 是model.tblClients = context.tblClient.ToList();
  • 感谢您帮助解决表名混淆问题,将使用其他名称创建一个新表并实施您的代码。离开办公室。
  • 这样更好,好像你搞砸了 Entityframework 配置。从一个新的开始!您的代码中必须有“客户端”类,尝试搜索它,看看您是否可以解决它。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2013-11-10
  • 2014-11-30
  • 2017-06-19
  • 2011-06-26
  • 2014-01-08
  • 2014-03-29
  • 2018-02-16
相关资源
最近更新 更多