实体框架4.1无效的对象名称

时间:2011-11-01 09:10:10

标签: entity-framework entity-framework-4

我在实体框架中遇到以下错误,并且不能为我的生活找出导致它的原因。

无效的对象名称'dbo.User'

数据库中的实际表名称称为Users,我通过右键单击并选择“从数据库更新模型”将其添加到我的实体模型中我的项目中有大约六个其他模型都连接到具有复数的同一数据库表名并以完全相同的方式更新,没有任何问题。由于某种原因,EF在尝试执行更新时会从我的表名中删除's'。从下面的代码中我可以看到,我在更新之前执行选择,没有问题。

我还尝试删除实体并重新创建它,取消选中'Pluralize或singularize generated object names'。但问题仍然存在。

任何想法都会受到赞赏。

public void Update(User updatedUser)
{
    using (var context = CreateUserContext())
    {
        var entity = context.UserEntities
            .Where(u => u.UserId == updatedUser.UserId)
            .SingleOrDefault();

        if (entity != null)
        {
            entity.Name = updatedUser.Name;
            entity.Description = updatedUser.Description;
            entity.LastModifiedById = updatedUser.LastModifiedById;
            entity.IsDeleted = updatedUser.IsDeleted;

            context.UserEntities.ApplyCurrentValues(entity);
            context.SaveChanges();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以选择用户这一事实让我相信EF映射是可以的。

检查表上是否错误地使用dbo.User作为表名。

作为旁注,你可以做两件事来帮助诊断这样的问题:

  1. 尝试在SSMS中手动更新行。这将告诉您问题是EF,还是SQL Server(触发器,约束等)

  2. 使用SQL事件探查器检查EF正在向数据库发送的SQL语句。

  3. 要检查SQL语句,您也可以使用LINQPad,尽管(此时)您需要use the latest beta才能使用EF 4.1。

相关问题