Linq實體繼承使用概述
作者:佚名
這里介紹Linq實體繼承使用、測試一下Linq to sql是否能根據TopicType識別派生類和如何進行增刪操作等方面。
在向大家詳細介紹Linq實體繼承使用之前,首先讓大家了解下Linq to sql是否能根據TopicType識別派生類,然后全面介紹Linq實體繼承使用。
Linq實體繼承使用
定義好實體繼承之后,我們就可以Linq實體繼承使用了。先是自定義一個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 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();
以上介紹Linq實體繼承使用
【編輯推薦】
責任編輯:佚名
來源:
IT168