65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.19/5 (12投票s)

2009年10月29日

公共领域

2分钟阅读

viewsIcon

107994

downloadIcon

4314

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;
    }
}
© . All rights reserved.