306
技術社區[雲棲]
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-03 05:40:20