2011-08-24 71 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