2

次のコードで生成されたテーブルを使用して、SQLServerを介して基本的なデータベースを作成しました。

CREATE TABLE [dbo].[Characters]
(
    [ID] INT NOT NULL PRIMARY KEY,
    [Name] varchar(MAX) NOT NULL,
    [RefName] varchar(8) NOT NULL
)

CREATE TABLE [dbo].[Players]
(
    [ID] INT NOT NULL PRIMARY KEY,
    [Name] VARCHAR(MAX) NOT NULL,
    [SkypeHandle] VARCHAR(MAX) NOT NULL
)


CREATE TABLE [dbo].[CharacterOwnership]
(
    [CharacterID] int NOT NULL,
    [PlayerID] int NOT NULL, 
    CONSTRAINT [FK_CharacterOwnership_ToCharacters] FOREIGN KEY ([CharacterID]) REFERENCES [Characters]([ID]),
    CONSTRAINT [FK_CharacterOwnership_ToPlayers] FOREIGN KEY ([PlayerID]) REFERENCES [Players]([ID]),
)

Visual Studio 2012のサーバーエクスプローラーからテーブルをドラッグして、次の図を生成しました。

自動生成されたERD

私の知る限り、主キーと外部キーを正しく設定しました。

var db = new DBClassesDataContext();

LINQは、すべてのテーブル、およびそのテーブルの任意のフィールドに問題なくアクセスできます。ただし、関連するテーブルを表示することはできません。

過去数日間にLINQtoSQLを使用して(別のデータベースを使用して)別のプロジェクトをセットアップしましたが、以前はこの問題は発生していませんでした。私が見つけることができるこの問題を抱えている他のすべての人をグーグルで検索すると、PKとFKが正しく構成されていなかったために問題が発生しましたが、前に述べたように、それらは私には正しいように見えます。(そうでない場合は、私のやり方の誤りを自由に指摘してください!)

また、Visual Studioを閉じて再度開くようにというアドバイスに従いましたが、役に立ちませんでした。

4

1 に答える 1

5

だから私はそれを理解しました。グーグル経由でこれに出くわすかもしれない人のために:

すべてのテーブルは、関連付けテーブルであっても、主キーを持っている必要があります。例外なし。

なぜ-論理的に-これが当てはまる必要があるのか​​はわかりませんが、それはLINQtoSQLの背景的な性質だと思います。

于 2013-03-22T01:12:34.433 に答える