私は自分の質問を解決したばかりですが、他の人が読むのに役立つかもしれないと思ったので、とにかく投稿することにしました。
私は紺碧の開発を始めようとしていますが、現在データベースを立ち上げて実行する段階にあります。数回のヒックアップの後、私は次のことを達成しました。
- インストールされた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:EntityFrameworkプロバイダータイプ'System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089' for'System.Data.SqlClient' ADO.NETプロバイダーを読み込めませんでした。実行中のアプリケーションでプロバイダーアセンブリが使用可能であることを確認してください。詳細については、http: //go.microsoft.com/fwlink/?LinkId=260882を参照してください。
解決
これを解決するために私がしなければならなかったことは、NuGet管理(右クリックソリューション)を開き、EntityFrameworkの管理ボタンを押すことです。ダイアログで、テストソリューションの前にチェックボックスを追加し、再構築して実行します。
これで、単体テストを介して新しいユーザーを作成し、それをデータベースに保存する非常に小さなソリューションができました。私が今拡張を始めることができる素晴らしいスタートアッププロジェクト。