原文链接:http://www.cnblogs.com/hjzhang/archive/2011/05/18/2050530.html

POCOs 是在Visual Studio 2010和ASP.NET 4.0中开始支持的一个新特性,其入门十分简单,下面我们基于Entity Framework 4.0.来实现一个基于POCOs的代码示例。

首先,创建一个测试工程

然后,新建一个Ado.NET Entity Data Model文件

如下图所示,定义两个类:Albums 和Photos

接下来我们还要确认是否已经关闭了代码自动生成,在Solution Explorer 选择edmx定义文件,在属性框确认Custom Tool为空,如下图所示:

定义以上两个对象的结构

  1. public class Albums
  2. {
  3. public Int32 Id { get; set; }
  4. public String AlbumName { get; set; }
  5. public String Remark { get; set; }
  6. public IList<Photos> Photos { get; set; }
  7. }
  1. public class Photos
  2. {
  3. public Int32 Id { get; set; }
  4. public String Name { get; set; }
  5. public String Description { get; set; }
  6. public String PicPath { get; set; }
  7. public Int32 Album_Id { get; set; }
  8. public Albums Albums { get; set; }
  9. }

然后建立自己的继承于ObjectContext的对象,在该对象中我们将定义需要使用LINQ查询的对象集合。如下所示:

  1. public class Mvc3SampleModel : ObjectContext
  2. {
  3. private readonly ObjectSet<Albums> _albums;
  4. private readonly ObjectSet<Photos> _photos;
  5. public Mvc3SampleModel()
  6. : base("Name=DbEntities", "DbEntities")
  7. {
  8. ContextOptions.LazyLoadingEnabled = true;
  9. _albums = CreateObjectSet<Albums>("Albums");
  10. _photos = CreateObjectSet<Photos>("Photos");
  11. }
  12. public ObjectSet<Albums> Albums
  13. {
  14. get { return _albums; }
  15. }
  16. public ObjectSet<Photos> Photos
  17. {
  18. get { return _photos; }
  19. }

下面演示基于LINQ进行查询的一般情况:

  1. public void GalleryTest()
  2. {
  3. var context = new Mvc3SampleModel();
  4. var visibleAlbums = from a in context.Albums
  5. where a.AlbumName !=null
  6. select a;
  7. foreach (var visibleAlbum in visibleAlbums)
  8. {
  9. Console.WriteLine(visibleAlbum.AlbumName);
  10. }
  11. var searchPhotos = from p in context.Photos
  12. where p.Name.StartsWith("M")
  13. select p;
  14. foreach (var searchPhoto in searchPhotos)
  15. {
  16. Console.WriteLine(searchPhoto.Name);
  17. }
  18. }

以下为测试结果

[EF1]POCOs(Plain Old C# Object)Entity Framework 4.x: POCOs入门的更多相关文章

  1. Java基础 之软引用、弱引用、虚引用 ·[转载]

    Java基础 之软引用.弱引用.虚引用 ·[转载] 2011-11-24 14:43:41 Java基础 之软引用.弱引用.虚引用 浏览(509)|评论(1)   交流分类:Java|笔记分类: Ja ...

  2. [整理]EABI和OABI【转】

    本文转载自:https://www.crifan.com/order_eabi_and_oabi/ 1.什么是ABIABI,application binary interface (ABI),应用程 ...

  3. [caffe]linux下安装caffe(无cuda)以及python接口

    昨天在mac上折腾了一天都没有安装成功,晚上在mac上装了一个ParallelDesktop虚拟机,然后装了linux,十分钟就安装好了,我也是醉了=.= 主要过程稍微记录一下: 1.安装BLAS s ...

  4. [Swift]基础

    [Swift]基础 一, 常用变量 var str = "Hello, playground" //变量 let str1="Hello xmj112288" ...

  5. [Ruby on Rails系列]4、专题:Rails应用的国际化[i18n]

    1. 什么是internationalization(i18n)? 国际化,英文简称i18n,按照维基百科的定义:国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区 ...

  6. [译]一个灵活的 Trello 敏捷工作流

    [译]一个灵活的 Trello 敏捷工作流 翻译自 An Agile Trello Workflow That Keeps Tasks Flexible Getting things done 可不只 ...

  7. iOS10收集IDFA,植入第三方广告[终结]--ADMob

    [PS: 前段时间,公司做ASO推广,需要在应用中收集IDFA值,跟广告平台做交互!于是有了这个需求--] 1.首先,考虑了一下情况(自己懒 -_-#),就直接在首页上写了一个Banner,循环加载广 ...

  8. Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP

    Java基础-SSM之Spring的POJO(Plain Old Java Object)实现AOP 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上次我分享过Spring传统的A ...

  9. CSU 1642 Problem B[难][前缀和]

    Description 已知两个正整数a和b,求在a与b之间(包含a和b)的所有整数的十进制表示中1出现的次数. Input 多组数据(不超过100000组),每组数据2个整数a,b.(1≤a,b≤1 ...

随机推荐

  1. Create an offline installation of Visual Studio 2017 RC

    Create an offline installation of Visual Studio 2017 RC ‎2016‎年‎12‎月‎7‎日                             ...

  2. Both must set "document.domain" to the same value to allow access.

    有两个域名指向我的网站,其中一个域名访问我的网站的话就可以看到日期控件 另一个域名访问我的网站不能看到日期控件, 在EF中使用日期控件,浏览器审查元素后看到,报这个错误“Both must set & ...

  3. MFC AfxMessageBox默认标题修改

    在工程的资源String Table里面添加AFX_IDS_APP_TITLE,然后设置其值即可,AFX_IDS_APP_TITLE的值就是AfxMessageBox的标题

  4. c#使用Split分割换行符 \r\n

    c# 使用Split分割 换行符,方法如下(其余方法有空再添加):   string str = "aa" + "\r\n" + "bb"; ...

  5. cin.ignore()函数的用法

    cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用.每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin. ...

  6. PHP 策略模式

    策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.策略模式把对象本身和运算规则区分开来,其功能非常强大,因为这个设计模式本身的核心思想 ...

  7. html5 canvas 详细使用教程

    转载自 http://www.cnblogs.com/tim-li/archive/2012/08/06/2580252.html 前言 基本知识 绘制矩形 清除矩形区域 圆弧 路径 绘制线段 绘制贝 ...

  8. java script第一篇(按钮全选的实现)

    今天刚学了java script,记录下学习新知识的点滴.以下是操作步骤.鉴于我是初级者,如有错误,恳请读者指正.万分谢谢. 1.新建一个文档(用NotePad软件,为了使得在浏览器中打开不是乱码,在 ...

  9. Scala 包

    包的绝对地址_root_.开始 如_root_.scala.collection.mutable.ArrayBuffer

  10. 用Android Studio开发最常用到的快捷键

    Android Studio常用快捷键 Android Studio日常开发常用快捷键. 快捷键版本: Mac OS X 10.5+ 搜索查看类 用途 Mac快捷键 搜索所有文件 double Shi ...