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);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫