4

私は自分の質問を解決したばかりですが、他の人が読むのに役立つかもしれないと思ったので、とにかく投稿することにしました。


私は紺碧の開発を始めようとしていますが、現在データベースを立ち上げて実行する段階にあります。数回のヒックアップの後、私は次のことを達成しました。

  • インストールされた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の管理ボタンを押すことです。ダイアログで、テストソリューションの前にチェックボックスを追加し、再構築して実行します。

これで、単体テストを介して新しいユーザーを作成し、それをデータベースに保存する非常に小さなソリューションができました。私が今拡張を始めることができる素晴らしいスタートアッププロジェクト。

4

1 に答える 1

3

質問自体を入力しながら質問を解決しました。私はまだ他の人の参考として役立つと思いました。

于 2012-12-23T22:03:11.847 に答える