2011-08-24 66 views
0

我正在开发.NET 4项目。最近一个列被添加到表“T”,之后,其他表与表T的所有关联都丢失了(任何具有来自表T的外键的表现在都没有)。我应该提到我们使用sqlmetal命令来更新与DBML相关的类文件。而且这个问题突然发生了,尽管DB经常更新并且之前没有这样的问题。在DBML designer.cs期间表关联丢失更新

如果问题与SQL Server或LINQ有关,我没有任何线索。任何人都可以帮助我吗?


表T:

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

SET ANSI_PADDING ON 
GO 

CREATE TABLE [dbo].[T](
[Id] [int] IDENTITY(1,1) NOT NULL, 
[Cid] [int] NULL, 
[Guid] [uniqueidentifier] NOT NULL 



CONSTRAINT [PK_T] PRIMARY KEY CLUSTERED 
(
[Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

    GO 

SET ANSI_PADDING OFF 
GO 

ALTER TABLE [dbo].[T] WITH CHECK ADD CONSTRAINT [FK_T_C] FOREIGN KEY([Cid]) 
REFERENCES [dbo].[C] ([Id]) 
GO 

ALTER TABLE [dbo].[T] CHECK CONSTRAINT [FK_T_C] 
GO 

ALTER TABLE [dbo].[T] ADD CONSTRAINT [DF_T_Guid] DEFAULT (newid()) FOR [Guid] 
GO 

表我具有从表T外键:

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[I](
[Id] [int] IDENTITY(1,1) NOT NULL, 

[Name] [nvarchar](512) NOT NULL, 
[TId] [int] NOT NULL, 
[Desc] [nvarchar](2000) NULL, 
[Guid] [uniqueidentifier] NOT NULL 

CONSTRAINT [PK_I] PRIMARY KEY CLUSTERED 
(
[Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 


ALTER TABLE [dbo].[I] WITH CHECK ADD CONSTRAINT [FK_I_T] FOREIGN KEY([TId]) 
REFERENCES [dbo].[T] ([Id]) 
GO 

ALTER TABLE [dbo].[I] CHECK CONSTRAINT [FK_I_T] 
GO 

ALTER TABLE [dbo].[I] ADD CONSTRAINT [DF_I_Guid] DEFAULT (newid()) FOR [Guid] 
GO 
+0

外键约束仍然存在于数据库中吗? – Pleun

+0

是的,所有的关系都存在于数据库中 – Marjan

回答

0

[不是一个真正的答案,但过长的意见写的,也许它会帮助]

由于约束存在于数据库中,我会说这个问题不是SQL服务器。

也许你的项目的内部有问题。

检查你的DMBL - 是对还是错?

如果错了,我会先做的是在Visual Studio(Express?)中创建一个新的虚拟项目并创建一个新的Linq-2-sql DBML文件,添加所有表并查看问题是否仍然存在。

+0

嘿,呃,其实我已经做到了,但是DBML仍然是错误的。问题是关于这个特定的表... – Marjan

+0

你可以去sql服务器管理工​​作室,右键单击表并点击'脚本'并在这里发布,也许我们可以看到一些奇怪的事情。 – Pleun

+0

T是我更改的表,而我是表中具有外键的表之一。 – Marjan