我刚刚解决了我自己的问题,但认为我可能仍然对其他人阅读有所帮助,所以决定还是发布它。
我正在尝试开始使用 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 上的管理按钮。在对话框中,在您的测试解决方案前面添加一个复选框,重新构建并继续。
现在,我有一个非常小的解决方案,它通过单元测试创建一个新用户并将其保存到我的数据库中。一个不错的启动项目,我现在可以开始扩展。