【问题标题】:EntityFramework unit test exampleEntityFramework 单元测试示例
【发布时间】:2012-12-24 06:03:11
【问题描述】:

我刚刚解决了自己的问题,但认为我可能仍然对其他人阅读有所帮助,所以还是决定发布它。


我正在尝试开始使用 azure 开发,目前正处于启动和运行数据库的阶段。经过几次打嗝后,我实现了以下目标:

  • 安装了 VS2012、MSSQLSERVER2012、Azure SDK .NET、EntityFramework 6.0.0 alpha 和一堆其他东西
  • 编写了我的第一个实体(代码优先)并从中生成了一个数据库。

在我接受下一个挑战之前,我最不想看到的就是首先向我新创建的数据库添加一些东西。我认为最简单的方法是在 nunit 中编写测试。

这是我目前得到的...

实体类User

namespace Models.Users
{
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string EmailAddress { get; set; }
    }
}

实体类UsersDb

using System.Data.Entity;

namespace Models.Users
{
    public class UsersDb : DbContext
    {
         public DbSet<User> Users { get; set; }
    }
}

使用以下 PS 命令生成数据库:

enable-migrations -ProjectName Models -ContextTypeName Models.Users.UsersDb
add-migration -ProjectName Models Initial
update-database -ProjectName Models 

最后,我写了下面的单元测试

using Models.Users;
using NUnit.Framework;

namespace Tests
{
    [TestFixture]
    public class DatabaseTests
    {
        [Test]
        public void AddUserTest()
        {
            var users = new UsersDb();
            var user = new User
                {
                    Id = 1, 
                    Name = "test", 
                    EmailAddress = "test@gmail.com"
                };

            users.Users.Add(user);
            users.SaveChanges();
        }
    }
}

该测试运行,但引发了我无法弄清楚的异常。

System.InvalidOperationException:“System.Data.SqlClient”的实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”无法加载 ADO.NET 提供程序。确保提供程序程序集可用于正在运行的应用程序。请参阅http://go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。

解决方案

我必须做的是打开 NuGet 管理(右键单击解决方案)并按下 EntityFramework 上的管理按钮。在对话框中,在您的测试解决方案前面添加一个复选框,重新构建并继续。

现在,我有一个非常小的解决方案,它通过单元测试创​​建一个新用户并将其保存到我的数据库中。一个不错的启动项目,我现在可以开始扩展了。

【问题讨论】:

    标签: database entity-framework azure nunit


    【解决方案1】:

    在键入问题本身时解决了问题。认为我仍然可以作为其他人的参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      相关资源
      最近更新 更多