1. 实体继承的定义
Linq to sql支持实体的单表继承,也就是基类和派生类都存储在一个表中。
[Table(Name = "Topics")]
[InheritanceMapping(Code = 0, Type = typeof(NewTopic), IsDefault = true)]
[InheritanceMapping(Code = 1, Type = typeof(Reply))]
public class Topic
{
[Column(Name = "TopicID", DbType = "int identity", IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false)]
public int TopicID { get; set; }
[Column(Name = "TopicType", DbType = "tinyint", CanBeNull = false, IsDiscriminator = true)]
public int TopicType { get; set; }
[Column(Name = "TopicTitle", DbType = "varchar(50)", CanBeNull = false)]
public string TopicTitle { get; set; }
[Column(Name = "TopicContent", DbType = "varchar(max)", CanBeNull = false)]
public string TopicContent { get; set; }
}
为类加了InheritanceMapping特性定义,0的时候类型就是NewTopic,1的时候就是Reply。并且为TopicType字段上的特性中加了IsDiscriminator = true,告知Linq to sql这个字段就是用于分类的字段。
2. 实体继承的使用
1) 定义继承的实体
2) 自定义DataContext
public partial class BBSContext : DataContext
{
public Table BoardCategories;
public Table Boards;
public Table Topics;
public BBSContext(string connection) : base(connection) { }
}
3. 实体关系定义
定义实体关系的优势在于,我们无须显式作连接操作就能处理关系表的条件。
4. 实体关系的使用