我正在设计我的数据库和 LINQ To SQL ASP.NET Web 应用程序。
想象一下,我有两种类型的页面:普通页面和根页面。有些页面是根。有些页面不是。
我有一个 Page 数据库表和一个 RootPage 数据库表:
Page
----
PK PageId
HtmlTitle
PageHeading
MetaDescription
IsRoot
RootPage
--------
FK PK PageId
FavIcon
StyleSheet
MasterPage
我认为如果在我的 DBML 文件中设置 IsRoot 列的 IsDiscriminator 属性,那么我的 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();
LINQ to SQL IsDiscriminator 列可以为空还是假?这行得通吗?