閱讀291 返回首頁    go 人物


Linq操作與外鍵的聯係

 

一個飯局有多個參與者

 

這是一些基本方法

   

    public class DinnerRepository:IDinnerRepository
    {
        NerdDinnerDataContext dc = new NerdDinnerDataContext();

        public IQueryable<Dinners> FindAllDinners()
        {
            return dc.Dinners;
        }

        public IQueryable<Dinners> FindUpComingDinners()
        {
            return from dinner in dc.Dinners
                   where dinner.EventDate > DateTime.Now
                   orderby dinner.EventDate
                   select dinner;
        }

        public Dinners GetDinner(int id)
        {
            return dc.Dinners.Where(d => d.DinnerID == id).FirstOrDefault();
        }

        public void Add(Dinners d)
        {
            dc.Dinners.InsertOnSubmit(d);
        }

 

        // 一個飯局有多個參與者

        // 刪掉飯局,就要刪掉參與者

        public void Delete(Dinners d)
       {
            // 刪除與之為外鍵的信息
            dc.RSVP.DeleteAllOnSubmit(d.RSVP);
            dc.Dinners.DeleteOnSubmit(d);
       }

        public void Save()
        {
            dc.SubmitChanges();
        }
    }

 

那麼我取消一個飯局,那麼即必須把RSVP表與之相關的參與者也要刪掉,那麼linq提供了一個方便的方法

 

        public void Delete(Dinners d)
        {
            // 刪除與之為外鍵的信息
            dc.RSVP.DeleteAllOnSubmit(d.RSVP);
            dc.Dinners.DeleteOnSubmit(d);
        }

 

 

下麵的示例代碼首先檢索一個 dinner 對象,然後添加一個 RSVP 對象。這裏,使用 Dinner 對象的 RSVPs
集合對象。當調用 Resposity 對象的 Save()方法時,一條新的記錄添加 RSVP表中。

 

DinnerRepository dinnerRepository = new DinnerRepository(); 
Dinner dinner = dinnerRepository.GetDinner(5); 
 
RSVP myRSVP = new RSVP();
myRSVP.AttendeeName = "ScottGu"; 
dinner.RSVP.Add(myRSVP); 

dinnerRepository.Save();

最後更新:2017-04-02 22:16:21

  上一篇:go 個人需要的準備材料2
  下一篇:go jQuery中的toggle方法