ADO.NET Entity Framework 作为数据访问层






4.19/5 (12投票s)
ADO.NET Entity Framework 作为数据访问层
引言
本文面向希望学习如何将 ADO.NET Entity Framework 作为应用程序数据访问层的初学者开发者。 在本文中,使用 Entity Framework 库在 C# 中编写了一个简单的 CRUD 操作。 还包括单元测试用例,以便可以针对实时数据测试代码。
解压缩代码应用程序,执行数据库脚本,以便创建数据库模式。
理解搜索条件需要掌握基本的 Lambda 表达式知识。
ADO.Net Entity Framework
这是 Microsoft 的新框架,用于针对数据库生成实体数据模型。 它减少了针对现有数据库创建基于对象的数据应用程序所需的代码和时间。 生成 EDM 的步骤。
- 在解决方案中,添加一个名为
DataAccessLayer
的新项目。 - 右键单击项目,然后单击“添加”->“新建项”。
- 在“添加新项”对话框中,选择 ADO.NET 实体数据模型
- 将名称从 Model1.edmx 更改为 TestModel.edmx。 单击“添加”按钮
- 将提示实体数据模型向导。 选择“从数据库生成”,然后单击“下一步”按钮。
- 单击对话框中的 新建连接... 按钮。
- 在连接属性对话框中,我们可以选择服务器和数据库,并输入用户凭据以访问数据库,并通过单击 测试连接 按钮进行测试。 完成后,单击“确定”按钮。
- 在下一个对话框中,选择如图所示的表,然后单击“完成”按钮。
- 现在在项目中添加一个类文件,并将其命名为 CustomerDbOperation.cs。 在其中添加 4 个方法
- 保存记录
- 更新记录
- 获取记录
- 删除记录
Using the Code
应用程序中有四个方法。
SaveRecord
方法将 Customer
对象作为参数,并将其持久化到数据库中,并返回数据库中新生成的记录的 CustomerId
。
public int SaveRecord(Customer record)
{
using (testEntities = new TestEntities())
{
testEntities.AddToCustomer(record);
testEntities.SaveChanges();
}
return record.CId;
}
UpdateRecord
更新数据库中的现有记录。
public bool UpdateRecord(Customer record)
{
EntityKey key;
object originalItem;
using(testEntities = new TestEntities())
{
key = testEntities.CreateEntityKey("Customer", record);
if(testEntities.TryGetObjectByKey(key, out originalItem))
{
testEntities.ApplyPropertyChanges(key.EntitySetName, record);
}
testEntities.SaveChanges();
return true;
}
}
GetRecord
准备对象查询并从数据库中筛选客户记录。
public List<customer> GetRecord(Customer record)
{
testEntities = new TestEntities();
IQueryable<customer> custQuery = testEntities.Customer.AsQueryable<customer>();
if (record.CId > 0)
{
custQuery = custQuery.Where(c => c.CId == record.CId);
}
if (!string.IsNullOrEmpty(record.CFirstName))
{
custQuery = custQuery.Where(c => c.CFirstName.Contains(record.CFirstName));
}
if (!string.IsNullOrEmpty(record.CLastName))
{
custQuery = custQuery.Where(c => c.CLastName.Contains(record.CLastName));
}
if (!string.IsNullOrEmpty(record.CAddress))
{
custQuery = custQuery.Where(c => c.CLastName.Contains(record.CAddress));
}
return custQuery.ToList();
}
DeleteRecord
方法从数据库中删除记录。
public bool DeleteRecord(Customer record)
{
using (testEntities = new TestEntities())
{
var cust = testEntities.Customer.FirstOrDefault(c => c.CId == record.CId);
testEntities.DeleteObject(cust);
testEntities.SaveChanges();
return true;
}
}