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 に変換します。問題は、アプリケーションからテーブルに何かを挿入しようとすると、次のエラーが発生することです:

EntitySet 'LogEntrys' を更新できません。DefiningQuery があり、現在の操作をサポートする要素が要素に存在しないためです。

SO で同様の投稿を見たことがあり、このヒントで説明されているように XML edmx ファイルを編集して解決しようとしました: MSDN ブログのヒント 34、定義クエリを削除しました。キーは、本来あるべきように既に設定されています。

しかし、次のエラーが表示されます。

「オブジェクト名 'AMSModelStoreContainer.LogEntrys' が無効です。」

何が問題なのかわからない、または何が間違っているのですか?

何か案は?

ありがとうございました。

4

1 に答える 1

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にあった古いエントリを完全に削除し、いじくり回したので、再度=追加する必要がある場合があります。

于 2011-11-10T21:02:17.880 に答える