我刚刚解决了我自己的问题,但我认为我可能仍然会对其他人有所帮助,所以决定发布它。
我正在尝试开始使用azure开发,目前正处于启动和运行数据库的阶段。几次结束后,我实现了以下目标:
在我接受下一个挑战之前,我想看到的最后一件事是首先在我新创建的数据库中添加一些东西。我认为最简单的方法是在nunit中编写测试。
这是我到目前为止所得到的......
实体类用户:
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上的管理按钮。在对话框中,在测试解决方案前添加一个复选框,重建并继续。
现在,我有一个非常小的解决方案,通过单元测试创建一个新用户并将其保存到我的数据库中。一个很好的启动项目,我现在可以开始扩展。
答案 0 :(得分:3)
在键入问题本身时解决了问题。我以为我仍然可以作为其他人的参考。