【问题标题】:Table association is lost during DBML designer.cs UpdateDBML Designer.cs 更新期间表关联丢失
【发布时间】:2016-08-18 23:55:43
【问题描述】:

我正在开发一个 .NET 4 项目。最近一列被添加到表“T”中,之后其他表与表 T 的所有关联都丢失了(任何具有表 T 外键的表现在都没有它)。我应该提一下,我们使用 sqlmetal 命令来更新与 DBML 相关的类文件。而且这个问题是突然出现的,虽然DB更新频繁,以前没有出现过这样的问题。

我不知道问题是否与 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 外键的表 I:

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

【问题讨论】:

  • 数据库中是否还存在外键约束?
  • 是的,所有关系都存在于数据库中

标签: asp.net c#-4.0 linq-to-sql


【解决方案1】:

[不是真正的答案,但在 cmets 中写得太长,也许会有所帮助]

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

您的项目内部可能有问题。

检查您的 DMBL - 这是对还是错?

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

【讨论】:

  • 嘿,Pleun,其实我之前也做过,但 DBML 仍然是错误的。问题只是关于这个特定的表......
  • 你能不能去sql server management studio,右击表,点击'script to',贴在这里,也许我们能看到一些奇怪的东西。
  • T 是我更改的表,并且 I 是具有来自该表的外键的表之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多