我正在为需要本地数据库的 Windows Phone 8 构建一个库。[Table]
出于显而易见的原因,该库的用户将使用适当的 s 和s创建一个可映射的 LINQ-to-SQL 类[Column]
。但是,对于每个这样的类,我需要更多的列来实现库的内部功能。我的想法是我将在库中包含一个基类,该基类将具有与所需列相对应的成员。用户只需从该类继承,添加他自己的成员并将该类用作最终的 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 文档,我需要附加[InheritanceMapping]
需要继承类型的内容。但是,当我正在构建一个库时,我无法知道用户将从我的基类派生哪些类型(以及多少)。有没有办法解决?如何?