• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

我们将共同携手迎接你的到来!


新的一年
新的开始
新的目标
新的收获

kevin 愛戀 20140103

博客园          联系   管理     
Linq to sql(八):继承与关系(三)

实体继承的使用

       定义好继承的实体之后,我们就可以使用了。先是自定义一个DataContext吧:

public partial class BBSContext : DataContext

{

    public Table<BoardCategory> BoardCategories;

    public Table<Board> Boards;

    public Table<Topic> Topics;

    public BBSContext(string connection) : base(connection) { }

}

       然后,我们来测试一下Linq to sql是否能根据TopicType识别派生类:

        BBSContext ctx = new BBSContext("server=xxx;database=BBS;uid=xxx;pwd=xxx");

        var query = from t in ctx.Topics select t;

        foreach (Topic topic in query)

        {

            if (topic is NewTopic)

            {

                NewTopic newtopic = topic as NewTopic;

                Response.Write("标题:" + newtopic.TopicTitle + " 类型:" + newtopic.TopicType + "<br/>");

            }

            else if (topic is Reply)

            {

                Reply reply = topic as Reply;

                Response.Write("标题:" + reply.TopicTitle + " 类型:" + reply.TopicType + " 隶属主题:" + reply.ParentTopic + "<br/>");

            }

        }

       然后我们往Topics表中加一些数据,如下图:

       启动程序得到如下测试结果:


       当然,你也可以在查询句法中直接查询派生实体:

       newtopic和replies是两个GridView控件,执行效果如下图:


       再来看看如何进行增删操作:

        NewTopic nt = new NewTopic() { TopicTitle = "还是新主题", TopicContent = "还是新主题" };

        Reply rpl = new Reply() { TopicTitle = "还是新回复", TopicContent = "还是新回复", ParentTopic = 4 };

        ctx.Topics.Add(nt);

        ctx.Topics.Add(rpl);

        ctx.SubmitChanges();

        rpl = ctx.Topics.OfType<Reply>().Single(reply => reply.TopicID == 8);

        ctx.Topics.Remove(rpl);

        ctx.SubmitChanges();

posted on 2010-06-01 13:17  kevin_20131022  阅读(177)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3