4

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


我正在尝试开始使用 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”ADO.NET 的实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”无法加载提供程序。确保提供程序程序集可用于正在运行的应用程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882

解决方案

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

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

4

1 回答 1

3

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

于 2012-12-23T22:03:11.847 回答