При обновлении DBML designer.cs потеря связи с таблицей - PullRequest
0 голосов
/ 24 августа 2011

Я работаю над проектом .NET 4.Недавно в таблицу «T» был добавлен столбец, после чего все ассоциации других таблиц с таблицей T теряются (у любой таблицы, которая имела внешний ключ из таблицы T, теперь ее нет).Следует отметить, что мы используем команду sqlmetal для обновления файла класса, связанного с DBML.И эта проблема возникла внезапно, хотя БД часто обновлялась, и раньше такой проблемы не было.

Я не имею ни малейшего понятия, связана ли проблема с 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

Таблица I, которая имеет внешний ключ из таблицы 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

1 Ответ

0 голосов
/ 25 августа 2011

[Не совсем ответ, но слишком длинный, чтобы писать в комментариях, и, возможно, это поможет]

Поскольку в БД присутствуют ограничения, я бы сказал, что проблема не в SQL-сервере.

Возможно, что-то не так во внутренностях вашего проекта.

Проверьте ваш DMBL - это правильно или неправильно?

Если не так, сначала я должен создать новый фиктивный проект в Visual Studio (Express?) И новый Linq-2.-sql DBML файл, добавьте все таблицы и посмотрите, существует ли проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...