黄明 BLOG

专注项目管理,软件工程,软件架构,.NET,MOSS开发....
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

学Linq to sql(继承与关系)step8(入门级)

Posted on 2010-07-24 10:40  竹仪攸欣  阅读(155)  评论(0)    收藏  举报

 

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的时候类型就是NewTopic1的时候就是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.          实体关系的使用