2009-07-20 5 views
0

を構成キーでテーブルを更新するために、私はLINQ to SQLのを使用してテーブルを更新しようとすると、私は次の例外を取得しています:どのように複数のフィールドで

メンバー値「IdSeccionNovedad」 型のオブジェクトは、「新規」 が変更されました。あなたは オブジェクトのアイデンティティを定義する メンバーを変更することはできません。 で新しいアイデンティティを新しいオブジェクトを追加し、既存の を削除します。

ウィッヒ最初の文は次のように変換することができます。

CREATE TABLE [dbo].[Novedades](
    [IdNovedad] [int] NOT NULL, 
    [IdSeccionNovedad] [int] NOT NULL, 
    [Antetitulo] [varchar](250) NULL, 
    [Titulo] [varchar](250) NOT NULL, 
    [Sumario] [varchar](max) NULL, 
    [Cuerpo] [varchar](max) NULL, 
    [FechaPublicacion] [smalldatetime] NOT NULL, 
    [Activo] [bit] NOT NULL, 
CONSTRAINT [PK_Novedades] PRIMARY KEY CLUSTERED 
(
    [IdNovedad] ASC, 
    [IdSeccionNovedad] ASC 
) 

私が知っている:

の表は、このです オブジェクト識別

を定義するメンバーを変更することはできません私はストアドプロシージャを使用してこれを解決することができますが、どうすればこの問題を解決できますか? LinqとSql?

答えて

0

は、私はデータベースの設計を元に戻すことはできませんので、テーブルに更新ストアドプロシージャを使用することです。

将来の設計のために、私は唯一の1キーを持つテーブルを使用します。

1

複合キーはよくあからさま醜いと私の意見では...悪いデータベース設計の指標です。あなたはESTAに行きたいように見えるので、誰もが、これは動作しない理由を把握するためしかし、...自体にルートテーブルの設計は十分ではありません。理論的には、あなたの価値が有効である限り、何の問題もないはずです。更新に使用しているコードを教えてください。

よろしく。私は何

+0

YAH、私は同意するものとします。私はかなり常にセットアップROWIDの数値、ID列を持つすべてのテーブルと私のデシベルを。それは、私の主キーとして使用し、強制する必要が論理的なマルチフィールド「キー」があるならば、一意のインデックスを追加します。 – eidylon

関連する問題