我正在为Windows Phone 8构建一个需要本地数据库的库。出于显而易见的原因,库的用户将创建具有适当[Table]
和[Column]
s的可映射LINQ-to-SQL类。但是,在每个这样的类中,我需要更多的列来实现库的内部功能。我的想法是,我将在库中包含一个基类,该基类将具有与所需列对应的成员。用户只需继承该类,添加自己的成员并将该类用作最终的LINQ-to-SQL映射。
到目前为止,我的基类看起来像这样:
//Class to contain all the essential members
[Table]
public class SyncableEntityBase : NotifyBase, ISyncableBase
{
[Column(DbType = "INT NOT NULL IDENTITY", IsDbGenerated = true, IsPrimaryKey = true)]
public int ItemId { get; set; }
[Column]
public bool IsDeleted { get; set; }
[Column]
public DateTime RemoteLastUpdated { get; set; }
[Column]
public DateTime LocalLastUpdated { get; set; }
}
派生类,如下所示:
[Table]
public class ToDoCategory : SyncableEntityBase
{
private string _categoryName;
[Column]
public string CategoryName
{
get
{
return _categoryName;
}
set
{
if (_categoryName != value)
{
NotifyPropertyChanging("CategoryName");
_categoryName = value;
NotifyPropertyChanged("CategoryName");
}
}
}
private string _categoryColor;
[Column]
public string CategoryColor
{
get
{
return _categoryColor;
}
set
{
if (_categoryColor != value)
{
NotifyPropertyChanging("CategoryColor");
_categoryColor = value;
NotifyPropertyChanged("CategoryColor");
}
}
}
}
想法是让最终的课程有四个必要的列,两个由用户添加。根据MSDN文档here,我需要附加需要继承类型的[InheritanceMapping]
。但是,当我构建一个库时,我无法知道用户从我的基类派生的类型(以及多少)。有没有办法解决?怎么样?