4

所以这里是交易,我已经改变了我的数据库模式,并且改变了我的一个表格的PK,并且删除了与旧PK(FK参考另一张桌子)。当在实体框架中使用savechanges()时,无效的列名称

但是我有这样的异常,当我插入使用的SaveChanges()方法

EX =一个新的实体{“而更新所述条目时发生错误。详见内部异常。”}

和内例外是

的InnerException = { “无效的列名称Audit_ID'。”}

Audit_ID是旧的PK。

我已经试过这 "Invalid column name" when trying to insert data into database using SQL

Invalid column name when trying to add an entity to a database using DbContext

Invalid column name after mapping

和没有解决我的问题,从而为我删除了我的整个EDMX并建立一个新的也没用。

PS:我使用的数据库第一种方法

+0

你能显示'savechanges()''ef query'吗? – Sampath

+0

通常删除旧PK并添加新PK需要使用DB第一种方法进行模型更新。如果您删除了旧的'Audit_ID' PK的所有FK引用,则可以在模型类内设置'KeyAttribute'为数据库集分配新的PK。 –

回答

1

由于该问题实际上存在于SQL服务器数据库中,所以解决方案都不起作用。

我运行SQL事件探查器并执行程序插入语句,我发现错误出现在具有“上一列”名称的表格触发器中,并将其更改为新的PK,并最终奏效。

因此,如果任何人有类似的问题,在帖子中的上述链接可能会有所帮助,或者你应该检查问题是否真的发生在数据库服务器上。

0

移除/删除从EF模型表(确保它通过查看模型浏览器视图中删除)。

重建解决方案。

确保您的表已保存。检查你的连接字符串,以及你正在引用正确的数据库。

通过更新模型工具再次添加表。

编辑:更好地阅读问题

+0

没有工作伙伴,它实际上使情况变得更糟 – SaadK

+0

这是极不可能的。你是否还有任何外键连接? – Karlta05

+0

_如何让事情变得更糟? – Luke

0

创建您自己的ModelKeyBuilder类。

class MyOwnModelKeyBuilder 
{ 

    public static void BuildCompositeKeys(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<YourEntity>() 
     .Ignore(x=>x.Audit_ID) 
     .HasKey(x=>x.NewPrimaryKey); 
    } 
} 

而在你Model.Context.cs

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    MyOwnModelKeyBuilder.BuildCompositeKeys(modelBuilder); 
} 

它可能不是直线解决方案,因为我不知道的表结构,但它可以帮助你。

+0

没有工作,“Audit_iD没有定义) – SaadK

相关问题