【问题标题】:Entity Framework error when inserting into table with trigger - The member with identity 'AutoNumber' does not exist in the metadata collection使用触发器插入表时出现实体框架错误 - 元数据集合中不存在身份为“AutoNumber”的成员
【发布时间】:2013-09-25 18:53:31
【问题描述】:

当我使用实体框架插入一行时,我得到这个错误:

元数据集合中不存在身份为“AutoNumber”的成员。\r\n参数名称:身份

问题是表上的插入触发器。

这是表结构:

CustomerID | (identity, auto increment)
FirstName  |
LastName   |

这里是触发器:

CREATE TRIGGER [dbo].[TR_Customer_INSERT] 
ON [dbo].[Customer]
FOR INSERT
AS
    SET NOCOUNT ON

    SELECT @@IDENTITY AS AutoNumber
    RETURN

是否可以在不删除触发器的情况下使用实体框架?我可以以某种方式定义“自动编号”吗?为什么不直接忽略触发的结果?

更新:我放弃并删除了触发器。

【问题讨论】:

  • 正常插入一行时该触发器是否起作用?
  • 是的,它是一个旧触发器和旧数据库结构。如果我执行insert into Customer values('jane','doe'),我可以插入一行

标签: sql-server entity-framework triggers


【解决方案1】:

你不能这样做:

Select * from COMPONENT_TYPES_IN_SERVICE cts

其中 cts.id = @ComponentTypeID;

它将 COMPONENT_TYPES_IN_SERVICE 记录返回给您的应用程序,并且 EF 尝试将返回的值复制到 SERVICE 中,因为它认为您正在传回一些数据库生成的值。

The member with identity 'component_type_name' does not exist in the metadata collection.\r\nParameter name: identity

【讨论】:

    【解决方案2】:

    见this回复

    因此,在 EF 框架中关闭验证:

    context.Configuration.ValidateOnSaveEnabled = false 
    

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2016-09-25
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      相关资源
      最近更新 更多