这个无效的对象名称来自哪里?

时间:2017-12-08 18:48:55

标签: c# .net entity-framework

我有一个简单的SQL UPDATE查询,它抱怨“无效的对象名称”AuditCrudFields根本不存在于我的ASP.NET项目中。 (我已经尝试在我的项目中使用AuditCrudFields进行grepping但找不到匹配项。)

UPDATE声明是:

UPDATE [dbo].[PartModel]
SET partOfficial = 39, updateTS = CONVERT(DATETIME, ‘2017-12-08’, 111)  
WHERE partId = 298

错误返回:

enter image description here

令人费解的是,这些都是PartModel内存在的所有属性。所以我想知道AuditCrudFields来自哪里?

public class PartModel : EntityInformation
{
    [Key]
    public Int64 partId { get; set; }

    public int partTypeId { get; set; }
    [ForeignKey("partTypeId")]
    public virtual PartTypeModel PartType { get; set; }

    public int locationId { get; set; }
    [ForeignKey("locationId")]
    public virtual LocationModel Location { get; set; }

    public int partOfficial { get; set; }
    public int partUnofficial { get; set; }
    public int partThreshold { get; set; }

    public string partImg { get; set; }
    public int partStatus { get; set; }
}

2 个答案:

答案 0 :(得分:3)

您可以运行此查询来查找尝试使用表AuditCrudFields的SQL对象代码:

select *
from sys.objects
where object_definition(object_id) like '%AuditCrudFields%'

如果不在触发器定义中,我会感到非常惊讶。

答案 1 :(得分:2)

你所拥有的是一个名为AuditCrudFields的已删除或重命名的对象(我将其称为死对象)

这可能在Trigger定义内(或者可能隐藏在存储过程,函数或索引定义中......)

找到死对象的最有效方法是将整个数据库编写成文本(放入一个大的SQL脚本),然后搜索文本......

在找到文本的地方,会指向它的使用位置(也许是一个触发器),然后你可以修复或删除触发器,希望它固定。

在互联网或SO上编写SQL SERVER数据库脚本有很多帮助,但here是另一个链接