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");