代码改变世界

EntityFramework外健的读写

2012-03-18 11:10  张剑  阅读(424)  评论(0编辑  收藏  举报

1.首先创建新闻表与新闻分类表,并建立主外键关系如下:

(注意:EF在使用时,表是需要定义主键的)

2.在VS2010的项目中点右建添加实体,选择到指定数据库,在以前的文章中有:http://jianle.blog.51cto.com/429692/723758

(注意:添加后可以看到NEWS实体中外键属性不存在了,变成了导航属性)

3.添加外键时使用的方法:

  1. publicbool AddNews(string title, int classid, string content,DateTime date,int hot )
  2. {
  3. bool mark = false;
  4. using (DemosModel.DemosEntities dde = new DemosModel.DemosEntities())
  5. {
  6. try
  7. {
  8. var nc = dde.NewsClass.First(p => p.id == classid);
  9. DemosModel.News dn = new DemosModel.News();
  10. dn.NewsClass = nc;
  11. dn.NewsTitle = title;
  12. dn.NewsContent = content;
  13. dn.NewsDate = date;
  14. dn.NewsHot = hot;
  15. dde.AddToNews(dn);
  16. dde.SaveChanges();
  17. mark = true;
  18. }
  19. catch (Exception err)
  20. {
  21. FileManage.Instance.AddLog(err.Message);
  22. }
  23. }
  24. return mark;
  25. }

要进行写入外健的操作,必须得先将外键表中对应的对象得到:

  1. var nc = dde.NewsClass.First(p => p.id == classid);

然后在为news实体对象的NewsClass导航属性赋值为查询出的外键表对象:

  1. DemosModel.News dn = new DemosModel.News();
  2. dn.NewsClass = nc;

最后添加保存就可以了:

  1. dde.AddToNews(dn);
  2. dde.SaveChanges();

4.查询News表时,获取外键表的方法:

  1. public List<DemosModel.News> NewsList()
  2. {
  3. List<DemosModel.News> list = new List<DemosModel.News>();
  4. using (DemosModel.DemosEntities dde = new DemosModel.DemosEntities())
  5. {
  6. list = dde.News.Include("NewsClass").ToList<DemosModel.News>();
  7. }
  8. return list;
  9. }

在查询News表时,需要使用Include方法将外键表包括进来,否则查询的结果中则外键表导航属性为null值。

  1. dde.News.Include("NewsClass");