Entity framework 实体框架4.1对象名称无效

Entity framework 实体框架4.1对象名称无效,entity-framework,entity-framework-4,Entity Framework,Entity Framework 4,我在实体框架中遇到了以下错误,我一辈子都搞不清是什么导致了它 无效的对象名称“dbo.User” 数据库中的实际表名称为Users,我通过右键单击并选择“updatemodelfromdatabase”将其添加到我的实体模型中。我的项目中还有大约六个其他模型,它们都连接到同一个数据库,具有多表名,并且以完全相同的方式更新,没有任何问题。似乎出于某种原因,EF在尝试执行更新时会从我的表名中删除“s”。正如您可以从下面的代码中看到的,我在更新之前执行了一个选择,这个选择没有问题 我还尝试过删除实体,

我在实体框架中遇到了以下错误,我一辈子都搞不清是什么导致了它

无效的对象名称“dbo.User”

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

我还尝试过删除实体,并取消选中“复数化或单数化生成的对象名称”来重新创建它。然而,问题依然存在

如果您有任何想法,我们将不胜感激

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();
        }
    }
}

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

检查表上是否有错误使用
dbo.User
作为表名的触发器

作为补充说明,您可以做两件事来帮助诊断这样的问题:

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

  • 使用SQL探查器检查EF发送到数据库的SQL语句


  • 要检查SQL语句,您还可以使用,尽管(此时)您需要使用EF 4.1。

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

    检查表上是否有错误使用
    dbo.User
    作为表名的触发器

    作为补充说明,您可以做两件事来帮助诊断这样的问题:

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

  • 使用SQL探查器检查EF发送到数据库的SQL语句


  • 要检查SQL语句,您也可以使用,不过(此时)您需要使用EF 4.1。

    非常感谢。我使用了SQL Profiler,更新后一切看起来都很好。然后我可以看到下一个动作,忘记了我在表上有触发器来更新上次修改的时间,derrr!!。再次感谢。@Cragly,很高兴我能提供帮助,而且我知道触发器中的代码很容易忘记,特别是当您关注应用程序的不同部分时。非常感谢。我使用了SQL Profiler,更新后一切看起来都很好。然后我可以看到下一个动作,忘记了我在表上有触发器来更新上次修改的时间,derrr!!。再次感谢。@Cragly,很高兴我能提供帮助,而且我知道触发器中的代码很容易忘记,特别是当您专注于应用程序的不同部分时。