创建可继承的LINQ-to-SQL可映射类

时间:2013-09-30 12:22:14

标签: c# linq windows-phone-8 sql-server-ce

我正在为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]。但是,当我构建一个库时,我无法知道用户从我的基类派生的类型(以及多少)。有没有办法解决?怎么样?

0 个答案:

没有答案