0

应用程序使用 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。问题是,当我尝试从 applicatio 向表中插入内容时,出现以下错误:

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

我在 SO 上看到过类似的帖子,我试图通过编辑 XML edmx 文件来解决它,就像在这个技巧中解释的那样:MSDN 博客技巧 34,我已经删除了定义查询。密钥已按应有的方式设置。

但后来我收到以下错误:

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

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

有任何想法吗?

谢谢你。

4

1 回答 1

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,
 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 中的旧条目并重新添加它,因为您已经修改了它。

于 2011-11-10T21:02:17.880 回答