0

これがまだ機能するかどうかはわかりませんが、これに関する情報はあまり見つかりませんでした。コマンドを実行しています

k ef 移行追加テスト

私のコードファーストモデルの移行を有効にしようとしています。私が得る例外は次のとおりです。

System.TypeLoadException: アセンブリ 'EntityFramework.SqlServer, Version =7.0.0.0, Culture=neutral, PublicKeyToken=null' の型 'Microsoft.Data.Entity.SqlServer .SequentialGuidValueGenerator' のメソッド 'Next' には実装がありません。

これは、これがまだ実装されていないことを意味しますが、信じがたいと思います。多分私は何か間違ったことをしていますか?

私が使用するプロジェクトは、VS2014 CTP3 で作成され、コア CLR を使用するように設定されています。これは project.json です:

{
"webroot" : "wwwroot",
"exclude": "wwwroot/**/*.*",
"dependencies": {
    "EntityFramework.SqlServer": "7.0.0-alpha4",
    "Microsoft.AspNet.Mvc": "6.0.0-alpha4",
    "Microsoft.AspNet.Identity.SqlServer": "3.0.0-alpha4",
    "Microsoft.AspNet.Identity.Authentication": "3.0.0-alpha4",
    "Microsoft.AspNet.Security.Cookies": "1.0.0-alpha4",
    "Microsoft.AspNet.Server.IIS": "1.0.0-alpha4",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-alpha4",
    "Microsoft.AspNet.StaticFiles": "1.0.0-alpha4",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-alpha4",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-alpha4",
    "EntityFramework.Commands": "7.0.0-*"
},
"commands": {
    /* Change the port number when you are self hosting this application */
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",
     "ef": "EntityFramework.Commands"
},
"frameworks": {
    "aspnet50" : { },
    "aspnetcore50" : { }
}

}

これはおそらくバージョン管理の問題であると考えたので、EF 参照を次のように変更しました。

"EntityFramework.SqlServer": "7.0.0-*"

これにより、移行コマンドで次の例外が発生します。

System.Exception: TODO: タイプ 'Microsoft.Data.Entity.Migrations.ModelDiffer' のサービスが登録されていません。

これは取得する方が良い例外だと思いますが、これを修正する方法については何も見つかりませんでした。利用可能な musicstore サンプルでは、​​移行は使用されません。

アップデート

コンテキストとモデル:

public class MyContext : DbContext
{
    public DbSet<MyModel> MyModels { get; set; }

    protected override void OnConfiguring(DbContextOptions options)
    {
        var configuration = new Configuration();
        configuration.AddJsonFile("config.json");

        options.UseSqlServer(configuration.Get("Data:DefaultConnection:ConnectionString"));
        base.OnConfiguring(options);
    }
}

public class MyModel
{
    public int MyModelId{ get; set; }
    public string Name { get; set; }
}

起動:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        // Setup configuration sources
        var configuration = new Configuration();
        configuration.AddJsonFile("config.json");
        configuration.AddEnvironmentVariables();

        // Set up application services
        app.UseServices(services =>
        {
            // Add EF services to the services container
            services.AddEntityFramework().AddSqlServer();

            // Add MVC services to the services container
            services.AddMvc();
        });

        // Enable Browser Link support
        app.UseBrowserLink();

        // Add static files to the request pipeline
        app.UseStaticFiles();

    }
}

おそらく重要なことですが、私はこれを Windows 10 テクニカル プレビューで実行しています。

更新 2

おそらくバージョン管理の問題、私のNuget.configにとって重要です:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/" />
    <add key="NuGet.org" value="https://nuget.org/api/v2/" />
  </packageSources>
  <packageSourceCredentials>
    <AspNetVNext>
      <add key="Username" value="aspnetreadonly" />
      <add key="ClearTextPassword" value="4d8a2d9c-7b80-4162-9978-47e918c9658c" />
    </AspNetVNext>
  </packageSourceCredentials>
</configuration>

4

0 に答える 0