EF之POCO应用系列2——示例入门

 上个系列主要是对什么是POCO做了简单的介绍,对POCO大概概念不了解的可以点这里查看系列一的内容。本系列开始对

POCO的使用,通过简单示例快速入门,所用的数据库是Northwind数据库

第1步 - 创建模型,关闭默认代码生成

1、打开VS2010创建一个类库,将工程命名为NorthwindModel,该工程忽略数据库持久化与对EF依赖。

2、新建一个类库,命名为“NorthwindData”,引用“System.date.Entity",以及添加对NorthwindModel项目的依赖。

3、添加ADO。NET data model到NorthwindData工程中,将项目命名为"Northwind.edmx "如下图:

 

4、通过“ 从数据库中创建”为“Northwind”数据库创建模型。

5、选择select Categories 和 Products两个表。

6、选择Northwind.edmx 属性,将“自定义工具”中的内容清空,去掉自动生成代码。如下图;

接下来,我们将编写POCO实体。

第二步:编写POCO实体代码

    在NorthwindModel工程中添加Category.cs和Product.cs两个类,这两个类的代码如下:

    public class Category
    {
        public int CategoryID { get; set; }
        public string CategoryName { get; set; }
        public string Description { get; set; }
        public byte[] Picture { get; set; }
        public List<Product> Products { get; set; }
    }

在这个类中包含了"product"集合类型属性,下面将定义product类

public class Product
    {
        public int ProductID { get; set; }
        public string ProductName { get; set; }
        public int SupplierID { get; set; }
        public string QuantityPerUnit { get; set; }
        public decimal UnitPrice { get; set; }
        public Int16 UnitsInStock { get; set; }
        public Int16 UnitsOnOrder { get; set; }
        public Int16 ReorderLevel { get; set; }
        public bool Discontinued { get; set; }
        public Category Category { get; set; }
    }

    public class NorthwindContext : ObjectContext
    {  
        public NorthwindContext() : base("name=NorthwindEntities", "NorthwindEntities")//数据库连接
        {
            _categories = CreateObjectSet<Category>();
            _products = CreateObjectSet<Product>();
        }

        public ObjectSet<Category> Categories
        {
            get
            {
                return _categories;
            }
        }
        private ObjectSet<Category> _categories;

        public ObjectSet<Product> Products
        {
            get
            {
                return _products;
            }
        }
        private ObjectSet<Product> _products;
    }

这些实体的实现是纯的POCO实体,你可以用这些实体类进行持久化操作,跟EF框架代码生成的实体类的唯一区别是他是POCO实体,可以运行单元测试进行一些简单的操作测试。

        [TestMethod]
        public void QueryForCategoriesReturnsRows()
        {          
          
            var categoryCount = context.Categories.ToList().Count;

            Assert.IsTrue(categoryCount > 0);
        }

posted @ 2011-05-11 08:28  sunrfun  阅读(4716)  评论(0编辑  收藏  举报