Linq實(shí)體繼承使用概述
在向大家詳細(xì)介紹Linq實(shí)體繼承使用之前,首先讓大家了解下Linq to sql是否能根據(jù)TopicType識(shí)別派生類,然后全面介紹Linq實(shí)體繼承使用。
Linq實(shí)體繼承使用
定義好實(shí)體繼承之后,我們就可以Linq實(shí)體繼承使用了。先是自定義一個(gè)DataContext吧:
- public partial class BBSContext : DataContext
- {
- public Table<BoardCategory> BoardCategories;
- public Table<Board> Boards;
- public Table<Topic> Topics;
- public BBSContext(string connection) : base(connection) { }
- }
然后,我們來(lái)測(cè)試一下Linq to sql是否能根據(jù)TopicType識(shí)別派生類:
- 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("標(biāo)題:" + newtopic.TopicTitle + " 類型:" +
newtopic.TopicType + "<br/>");- }
- else if (topic is Reply)
- {
- Reply reply = topic as Reply;
- Response.Write("標(biāo)題:" + reply.TopicTitle + " 類型:" +
reply.TopicType + " 隸屬主題:" + reply.ParentTopic + "<br/>");- }
- }
然后我們往Topics表中加一些數(shù)據(jù),如下圖:
啟動(dòng)程序得到如下測(cè)試結(jié)果:
再來(lái)看看如何進(jìn)行增刪操作
- NewTopic nt = new NewTopic() { TopicTitle = "還是新主題",
TopicContent = "還是新主題" };- Reply rpl = new Reply() { TopicTitle = "還是新回復(fù)",
TopicContent = "還是新回復(fù)", 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實(shí)體繼承使用
【編輯推薦】