I have a database for forum-type postings which includes, among others, 2 tables defined with a one to one relationship. One table represents the basic fields for all postings, where as the other table adds fields for a specific type of post.
01.
CREATE
TABLE
[dbo].[PostingBase](
02.
[posting_id] [
bigint
] IDENTITY(1,1)
NOT
NULL
,
03.
[post_title] [
varchar
](2550)
NULL
,
04.
[original_publish_date] [datetime]
NOT
NULL
,
05.
[published_by] [nvarchar](255)
NULL
,
06.
[publish_start_date] [datetime]
NOT
NULL
,
07.
[publish_expiration_date] [datetime]
NOT
NULL
,
08.
[is_enabled] [
bit
]
NULL
,
09.
[is_published] [
bit
]
NULL
,
10.
[created_date] [datetime]
NOT
NULL
,
11.
[created_by] [
varchar
](255)
NOT
NULL
,
12.
[updated_date] [datetime]
NOT
NULL
,
13.
[updated_by] [
varchar
](255)
NOT
NULL
,
14.
CONSTRAINT
[PK_PostingBase]
PRIMARY
KEY
CLUSTERED
15.
(
16.
[posting_id]
ASC
17.
)
WITH
(PAD_INDEX =
OFF
, STATISTICS_NORECOMPUTE =
OFF
, IGNORE_DUP_KEY =
OFF
, ALLOW_ROW_LOCKS =
ON
, ALLOW_PAGE_LOCKS =
ON
)
ON
[
PRIMARY
]
18.
)
ON
[
PRIMARY
]
19.
20.
GO
21.
22.
23.
CREATE
TABLE
[dbo].[AcademicDirectoryPostings](
24.
[posting_id] [
bigint
]
NOT
NULL
,
25.
[region_id] [
int
]
NULL
,
26.
[program_id] [
bigint
]
NULL
,
27.
[degree_code] [
varchar
](10)
NULL
,
28.
[post_content] [
varchar
](
max
)
NULL
,
29.
[post_additional_info] [nvarchar](
max
)
NULL
,
30.
[site_id] [
int
]
NOT
NULL
,
31.
[dept_id] [
bigint
]
NOT
NULL
,
32.
CONSTRAINT
[PK_AcademicDirectoryPostings]
PRIMARY
KEY
CLUSTERED
33.
(
34.
[posting_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
] TEXTIMAGE_ON [
PRIMARY
]
37.
38.
GO
39.
40.
SET
ANSI_PADDING
OFF
41.
GO
42.
43.
ALTER
TABLE
[dbo].[AcademicDirectoryPostings]
WITH
CHECK
ADD
CONSTRAINT
[FK_AcademicDirectoryPostings_AcademicPrograms]
FOREIGN
KEY
([program_id])
44.
REFERENCES
[dbo].[AcademicPrograms] ([program_id])
45.
GO
46.
47.
ALTER
TABLE
[dbo].[AcademicDirectoryPostings]
CHECK
CONSTRAINT
[FK_AcademicDirectoryPostings_AcademicPrograms]
48.
GO
49.
50.
ALTER
TABLE
[dbo].[AcademicDirectoryPostings]
WITH
CHECK
ADD
CONSTRAINT
[FK_AcademicDirectoryPostings_PostingBase]
FOREIGN
KEY
([posting_id])
51.
REFERENCES
[dbo].[PostingBase] ([posting_id])
52.
ON
UPDATE
CASCADE
53.
ON
DELETE
CASCADE
54.
GO
I created a Domain Model file (.rlinq) and imported the existing database schema. In the rlinq file I want to create a vertical relationship between the PostingBase and AcademicDirectoryPosting models. After following the instruction in the article ... ... the project indicates that it compiles successfully but the error window displayed errors and the rling file is identified as the source of the errors.
The db-optimistic-locking option may only be specified for the least derived class in a hierarchy
--> DbContext/namespace[DataAccess]/class[AcademicDirectoryPostingEntity]/db-optimistic-locking="changed" C:\Projects\Middle Tier\MT.v1\MT\DataAccess\Context\DbContext.rlinq
The meta constraint 'FK_AcademicDirectoryPostings_PostingBase' contains a source column 'posting_id' which is not part of the source table 'AcademicDirectoryPostings'. C:\Projects\Middle Tier\MT.v1\MT\DataAccess\Context\DbContext.rlinq
Class AcademicDirectoryPostingEntity has a persistence-capable-superclass so use the inheritance extension to specify its primary-key
--> DbContext/namespace[DataAccess]/class[AcademicDirectoryPostingEntity] C:\Projects\\Middle Tier\MT.v1\MT\DataAccess\Context\DbContext.rlinq
For the first error I followed the advice in the forum post ... How to: Create One-to-One Associations with Vertical Inheritance ... and changed the concurrency mode of the base class to "changed" and the concurrency mode of the derived class to "default". It did not seem to resolve the issue.
The second error, I assume was a result from when I deleted the primary key field from the derived class as instructed by the aforementioned instructions. When I deleted the primary key however, I was asked if I wanted to delete the associated column (which as not mentioned in the documentation). I tried it once and chose to NOT delete the associated column, That is when the error first appeared. I went back and manually re-added the property to the domain model and, using the Mapping Details Editor, I mapped the database column back to the property. This time when I was prompted to remove the column I answered "YES". No change. The project still built but the errors were still being reported in the error window.
The third error in the list I cannot really explain. I have been unable to find any information about "inheritance extensions" and have not been able to find any additional information on this error searching Google.
Any help that could be provided would be greatly appreciated!
Thanks,
G