EF一直告诉我,来自DB的实体没有InsertFunction具有Identity set?

时间:2011-11-10 20:54:33

标签: asp.net-mvc-3 entity-framework-4.1 dbcontext ef-database-first

应用程序使用Entity Framework 4.1和数据库优先方法。

我在数据库中有一个用于记录目的的简单表:

CREATE TABLE [dbo].[LogEntrys](
    [LogEntryID] [bigint] IDENTITY(1,1) NOT NULL,
    [Timestamp] [datetime] NULL,
    [Message] [varchar](5000) NULL,
    [IP] [varchar](50) NULL,
    [UserName] [varchar](256) NULL,
    [Controller] [varchar](50) NULL,
    [Action] [varchar](50) NULL
)

它将模型中的ok转换为EntitySet'LogEntrys'和Entity LogEntry。 问题是,当我尝试从应用程序向表中插入某些内容时,会出现以下错误:

  

无法更新EntitySet'LogEntrys',因为它有一个DefiningQuery,元素中不存在支持当前操作的元素。

我在SO上看过类似的帖子,我试图通过编辑XML edmx文件来解决它,如本技巧中所述:MSDN blog tip 34,我已经删除了定义查询。密钥已经设置好了。

然后我收到以下错误:

  

“无效的对象名称'AMSModelStoreContainer.LogEntrys'。”

我不确定问题是什么,和/或我做错了什么?

任何想法?

谢谢。

1 个答案:

答案 0 :(得分:1)

问题是no字段被设置为主键创建像这样的表

CREATE TABLE [dbo].[LogEntrys](
    [LogEntryID] [bigint] IDENTITY(1,1) NOT NULL,
    [Timestamp] [datetime] NULL,
    [Message] [varchar](5000) NULL,
    [IP] [varchar](50) NULL,
    [UserName] [varchar](256) NULL,
    [Controller] [varchar](50) NULL,
    [Action] [varchar](50) NULL,
 CONSTRAINT [PK_LogEntrys] PRIMARY KEY CLUSTERED 
(
    [LogEntryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

然后更新您的模型。您可能需要在.edmx中完全删除旧的条目,然后重新添加它,因为您已经修改了它。