LINQ to SQL关联未生成

Ran*_*ger 2 .net linq database linq-to-sql

我通过SQL Server创建了一个基本数据库,其中的表由以下代码生成:

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]),
)
Run Code Online (Sandbox Code Playgroud)

将表从Visual Studio 2012中的Server Explorer拖到上方时,生成了下图:

自动生成的ERD

据我所知,我正确设置了主键和外键。

var db = new DBClassesDataContext();
Run Code Online (Sandbox Code Playgroud)

LINQ能够访问每个表以及该表的任何字段而不会出现问题。但是,它不能显示关联的表。

在过去的几天中,我使用LINQ to SQL(使用另一个数据库)设置了另一个项目,以前没有这个问题。我发现所有其他遇到此问题的人都在使用该工具,因为PK和FK的配置不正确,但正如我之前所说,它们对我来说似乎是正确的。(如果不是,请随时指出我的错误!)

我也听从建议关闭Visual Studio并重新打开,但无济于事。

Ran*_*ger 5

所以我想通了。对于那些可能会通过Google遇到的人:

每个表,甚至是关联表,都必须具有主键。没有例外。

我不确定为什么(从逻辑上)会是这种情况,但我想这是LINQ to SQL的某些背景性质。

  • “对于那些可能通过Google遇到这种情况的人”今天就是我。因此,感谢您抽出宝贵时间发布解决方案。 (2认同)