Я разрабатываю свою базу данных и веб-приложение LINQ To SQL ASP.NET.
Представьте, что у меня есть два типа страниц: обычные и корневые. Некоторые страницы являются корнями. Некоторые страницы нет.
У меня есть таблица базы данных страниц и таблица базы данных RootPage:
Page
----
PK PageId
HtmlTitle
PageHeading
MetaDescription
IsRoot
RootPage
--------
FK PK PageId
FavIcon
StyleSheet
MasterPage
Я думаю, что если в моем файле DBML я установил свойство IsDiscriminator столбца IsRoot, то мой класс RootPage унаследует класс Page.
Я хочу, чтобы в моем коде было так:
MyDataContext db = new MyDataContext();
var roots = from p in db.Pages
where p is RootPage
select (RootPage)p;
Или вот так:
RootPage r = new RootPage();
r.HtmlTitle = "Foo";
r.FavIcon = "bar.ico";
...
db.Pages.Add(r);
db.SubmitChanges();
Может ли столбец IsDiscriminator LINQ to SQL иметь значение NULL или false? Это сработает?