1.首先創建新聞表與新聞分類表,並建立主外鍵關系如下:
(注意:EF在使用時,表是需要定義主鍵的)
2.在VS2010的項目中點右建添加實體,選擇到指定數據庫,在以前的文章中有:http://jianle.blog.51cto.com/429692/723758
(注意:添加後可以看到NEWS實體中外鍵屬性不存在了,變成了導航屬性)
3.添加外鍵時使用的方法:
public bool AddNews(string title, int classid, string content,DateTime date,int hot ) { bool mark = false; using (DemosModel.DemosEntities dde = new DemosModel.DemosEntities()) { try { var nc = dde.NewsClass.First(p => p.id == classid); DemosModel.News dn = new DemosModel.News(); dn.NewsClass = nc; dn.NewsTitle = title; dn.NewsContent = content; dn.NewsDate = date; dn.NewsHot = hot; dde.AddToNews(dn); dde.SaveChanges(); mark = true; } catch (Exception err) { FileManage.Instance.AddLog(err.Message); } } return mark; }
要進行寫入外健的操作,必須得先將外鍵表中對應的對象得到:
var nc = dde.NewsClass.First(p => p.id == classid);
然後在為news實體對象的NewsClass導航屬性賦值為查詢出的外鍵表對象:
DemosModel.News dn = new DemosModel.News(); dn.NewsClass = nc;
最後添加保存就可以了:
dde.AddToNews(dn); dde.SaveChanges();
4.查詢News表時,獲取外鍵表的方法:
public List<DemosModel.News> NewsList() { List<DemosModel.News> list = new List<DemosModel.News>(); using (DemosModel.DemosEntities dde = new DemosModel.DemosEntities()) { list = dde.News.Include("NewsClass").ToList<DemosModel.News>(); } return list; }
在查詢News表時,需要使用Include方法將外鍵表包括進來,否則查詢的結果中則外鍵表導航屬性為null值。
dde.News.Include("NewsClass");