2

I have some SQL from our DBA which I'm just checking it is right, since the EF doesn't seem to fully link entities together. It knows there is a relation but doesn't perform the FK to PK link.

Any ideas or thoughts (rather than use NHibernate! ) on it are appreciated.

1   CREATE TABLE [dbo].[Employee]( 
2       [ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
3       [PersonID] [int] NOT NULL, 
4       [GenderID] [int] NULL, 
5       [EthnicOriginID] [int] NULL, 
6       [MaritalStatusID] [int] NULL, 
7       [DateOfBirth] [datetime] NULL, 
8       [LeaveDate] [datetime] NULL, 
9       [OptOut] [bit] NULL CONSTRAINT [DF_employee_OptOut]  DEFAULT (0), 
10      [OptOutDate] [datetime] NULL, 
11      [PassportNumber] [nvarchar](50) NULL, 
12      [WorkPermitNumber] [nvarchar](50) NULL, 
13      [WorkPermitExpiryDate] [datetime] NULL, 
14      [PayrollNumber] [nvarchar](50) NULL, 
15      [NINumber] [nvarchar](50) NULL, 
16      [Visa] [bit] NULL CONSTRAINT [DF_employee_Visa]  DEFAULT (0), 
17      [VisaNumber] [nvarchar](50) NULL, 
18      [VisaExpiryDate] [smalldatetime] NULL, 
19      [GuaranteeAmount] [money] NULL, 
20      [GuaranteeDuration] [int] NULL, 
21      [GuaranteeEndDate] [datetime] NULL, 
22      [GuaranteePeriod] [int] NULL, 
23      [IsDisabled] [bit] NULL CONSTRAINT [DF_employee_IsDisabled]  DEFAULT (0), 
24      [DisabilityReferenceNumber] [nvarchar](20) NULL, 
25      [IsActive] [bit] NULL CONSTRAINT [DF_employee_Active]  DEFAULT (1), 
26      [IsUKResident] [bit] NULL, 
27      [BankAccount] [nvarchar](100) NULL, 
28   CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED  
29  ( 
30      [ID] ASC 
31  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY], 
32   CONSTRAINT [IX_employee] UNIQUE NONCLUSTERED  
33  ( 
34      [ID] ASC 
35  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] 
36  ) ON [PRIMARY] 
37   
38  GO 
39  ALTER TABLE [dbo].[Employee]  WITH NOCHECK ADD  CONSTRAINT [FK_Employee_People] FOREIGN KEY([PersonID]) 
40  REFERENCES [dbo].[Person] ([Id]) 
41  NOT FOR REPLICATION  
42  GO 
43  ALTER TABLE [dbo].[Employee] NOCHECK CONSTRAINT [FK_Employee_People] 
44   
45   
46  ---- 
47   
48  CREATE TABLE [dbo].[EmployeeWorkHistory]( 
49      [id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
50      [EmployeeId] [int] NOT NULL, 
51      [JobTitle] [nvarchar](50) NULL, 
52      [OfficeId] [int] NULL, 
53      [DepartmentId] [int] NULL, 
54      [StartDate] [smalldatetime] NULL, 
55      [EndDate] [smalldatetime] NULL, 
56      [Salary] [decimal](18, 0) NULL, 
57      [ContractTypeId] [int] NULL, 
58      [CommentID] [int] NULL, 
59      [WorkHours] [float] NULL, 
60      [ManagerEmployeeID] [int] NULL, 
61      [EmployeeTypeID] [int] NULL, 
62      [LastWorkingDay] [smalldatetime] NULL, 
63      [GardenLeave] [bit] NULL CONSTRAINT [DF_employeeWorkHistory_GardenLeave]  DEFAULT (0), 
64      [WorkingHours] [nvarchar](20) NULL CONSTRAINT [DF_EmployeeWorkHistory_WorkingHours]  DEFAULT ('8.30am - 5.30pm'), 
65      [WorkingDays] [nvarchar](100) NULL CONSTRAINT [DF_EmployeeWorkHistory_WorkingDays]  DEFAULT ('Monday to Friday'), 
66      [TerminationId] [int] NULL, 
67      [TerminiationDate] [smalldatetime] NULL, 
68   CONSTRAINT [PK_employeeWorkHistory] PRIMARY KEY CLUSTERED  
69  ( 
70      [id] ASC 
71  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] 
72  ) ON [PRIMARY] 
73   
74  GO 
75  EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'EmployeeWorkHistory', @level2type=N'COLUMN',@level2name=N'WorkingHours' 
76  GO 
77  ALTER TABLE [dbo].[EmployeeWorkHistory]  WITH NOCHECK ADD  CONSTRAINT [FK_EmployeeWorkHistory_ContractType] FOREIGN KEY([ContractTypeId]) 
78  REFERENCES [dbo].[ContractType] ([Id]) 
79  NOT FOR REPLICATION  
80  GO 
81  ALTER TABLE [dbo].[EmployeeWorkHistory] CHECK CONSTRAINT [FK_EmployeeWorkHistory_ContractType] 
82  GO 
83  ALTER TABLE [dbo].[EmployeeWorkHistory]  WITH NOCHECK ADD  CONSTRAINT [FK_EmployeeWorkHistory_Employee] FOREIGN KEY([EmployeeId]) 
84  REFERENCES [dbo].[Employee] ([ID]) 
85  NOT FOR REPLICATION  
86  GO 
87  ALTER TABLE [dbo].[EmployeeWorkHistory] CHECK CONSTRAINT [FK_EmployeeWorkHistory_Employee] 
88  GO 
89   
90   
91  ------ 
92   
93   
94  CREATE TABLE [dbo].[ContractType]( 
95      [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
96      [Text] [nvarchar](50) NOT NULL, 
97      [IsActive] [bit] NOT NULL CONSTRAINT [DF_ContractType_IsActive]  DEFAULT (1), 
98   CONSTRAINT [PK_ContractType] PRIMARY KEY CLUSTERED  
99  ( 
100     [Id] ASC 
101 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 100) ON [PRIMARY] 
102 ) ON [PRIMARY] 
103  
104 -- 
105  
106 CREATE TABLE [dbo].[EmployeeReference]( 
107     [ID] [int] IDENTITY(1,1) NOT NULL, 
108     [EmployeeID] [int] NOT NULL, 
109     [RefereePersonID] [int] NOT NULL, 
110     [Company] [nvarchar](200) NULL, 
111     [CommentID] [int] NULL, 
112     [DateRequested] [smalldatetime] NULL, 
113     [DateReceived] [smalldatetime] NULL, 
114     [TimeKnownFor] [nvarchar](100) NULL, 
115     [ReferenceDocument] [nvarchar](500) NULL, 
116     [ReferenceTypeID] [int] NOT NULL, 
117     [FileAttachmentID] [int] NULL, 
118     [ContactDetailId] [int] NULL, 
119  CONSTRAINT [PK_EmployeeReference] PRIMARY KEY CLUSTERED  
120 ( 
121     [ID] ASC 
122 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] 
123 ) ON [PRIMARY] 
124  
125 GO 
126 ALTER TABLE [dbo].[EmployeeReference]  WITH NOCHECK ADD  CONSTRAINT [FK_EmployeeReference_Person] FOREIGN KEY([RefereePersonID]) 
127 REFERENCES [dbo].[Person] ([Id]) 
128 NOT FOR REPLICATION  
129 GO 
130 ALTER TABLE [dbo].[EmployeeReference] NOCHECK CONSTRAINT [FK_EmployeeReference_Person] 
131 GO 
132 ALTER TABLE [dbo].[EmployeeReference]  WITH NOCHECK ADD  CONSTRAINT [FK_EmployeeReferenceMapping_Employee] FOREIGN KEY([EmployeeID]) 
133 REFERENCES [dbo].[Employee] ([ID]) 
134 NOT FOR REPLICATION  
135 GO 
136 ALTER TABLE [dbo].[EmployeeReference] NOCHECK CONSTRAINT [FK_EmployeeReferenceMapping_Employee] 
137  
138 --- 
139  
140  
141 CREATE TABLE [dbo].[Person]( 
142     [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
143     [SalutationId] [int] NULL, 
144     [Firstname] [nvarchar](50) NULL, 
145     [Middlename] [nvarchar](50) NULL, 
146     [Surname] [nvarchar](50) NULL, 
147     [PreferredName] [nvarchar](50) NULL, 
148     [ContactDetailId] [int] NULL, 
149     [PersonTypeId] [int] NULL, 
150     [IsActive] [bit] NOT NULL CONSTRAINT [DF_people_Active]  DEFAULT (1), 
151     [EnteredBy] [int] NULL, 
152     [EnteredDate] [datetime] NULL, 
153     [UpdatedBy] [int] NULL, 
154     [UpdatedDate] [datetime] NULL, 
155  CONSTRAINT [PK_person] PRIMARY KEY CLUSTERED  
156 ( 
157     [Id] ASC 
158 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] 
159 ) ON [PRIMARY] 
160  
161 GO 
162 GO 
163  
1
  • Why do you have a duplicate index on Employee? Commented Mar 20, 2009 at 9:10

1 Answer 1

2

You have defined NOCHECK on foreign key constraints

  ALTER TABLE [dbo].[Employee] NOCHECK CONSTRAINT [FK_Employee_People] 

Plus, you have a duplicate index on Employee.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.