应用程序使用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'。”
我不确定问题是什么,和/或我做错了什么?
任何想法?
谢谢。
答案 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中完全删除旧的条目,然后重新添加它,因为您已经修改了它。