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