Проблема в том, что вы пытаетесь разделить свой класс на две таблицы, RootPage и Page.
К сожалению, LINQ to SQL поддерживает только наследование одной таблицы, поэтому это не сработает.
Вам необходимо объединить два определения таблицы и сделать поля, специфичные для RootPage, обнуляемыми. например,
Page
----
PK PageId
HtmlTitle
PageHeading
MetaDescription
IsRoot
FavIcon (Nullable)
StyleSheet (Nullable)
MasterPage (Nullable)
Затем вы должны установить IsRoot в качестве дискриминатора и пометить класс Page как тип по умолчанию, а RootPage как класс для значения дискриминатора «True».
Альтернативой, если вы не возражаете против того, чтобы вещи читались только, было бы создание представления, объединяющего две таблицы и основывающего на этом классы.
Третий вариант может заключаться в рассмотрении такой композиции, как переименование таблицы RootPage в Root и создание ассоциации между RootPage и Root. Это будет означать, что вместо того, чтобы ваш класс RootPage имел все эти свойства, он вместо этого предоставил бы только свойство Root там, где они на самом деле находятся.