2016-11-14 9 views
3

私はdamienbod(https://damienbod.com/2016/01/11/asp-net-5-with-postgresql-and-entity-framework-7/)のチュートリアルに従いました。私は自分のPostgreSQLデータベースへの接続を管理し、EntityMigration履歴テーブル、DataEventRecordテーブル、およびSourceInfoテーブルを作成します。 DataAccessPostgreSqlProvider、DomainModel、およびiConnectの合計3つのプロジェクトがあります(Postgreには2つ、実際のプロジェクトは3つあります)。EFとDot Net Core 1(PostgreSQLデータベース)による移行のエラー

私は、Model、以下のコードを作成しました、その後、実行します。add-移行NestProtectDevices -context NestProtectDevices

を私は-contextを指定する必要がありますか、私はエラーを取得し、私はの-contextを指定した場合DomainModelPostgreSqlContextを使用すると、空のマイグレーションファイルが生成されます(マイモデルからのマイグレーションファイルを生成するのではなく)。それで、モデル名として-Contextを指定しました。以下は、モデルのコードと私が得ているエラーです。デバッグに役立つ他のコードが必要かどうかを私に教えてください。エラーと

using DataAccessPostgreSqlProvider; 
using DomainModel; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using Microsoft.EntityFrameworkCore; 
using DomainModel.Model; 

namespace iConnect.Models.Nest 
{ 
    public class NestProtectDevices : DomainModelPostgreSqlContext 
    { 
     public NestProtectDevices(DbContextOptions<DomainModelPostgreSqlContext> options) : base(options) 
     { 
     } 

     public long DeviceId { get; set; } 
     public long UserId { get; set; } 
     public int CompanyId { get; set; } 
     public long StructureId { get; set; } 
     public long WhereId { get; set; } 
     public string Name { get; set; } 
     public string NameLong { get; set; } 
     public bool IsOnline { get; set; } 
     public int BatteryHealth { get; set; } 
     public int CoAlarmState { get; set; } 
     public int SmokeAlarmState { get; set; } 
     public string UiColorState { get; set; } 
     public bool IsManualTestActive { get; set; } 
     public DateTime LastManualTestTime { get; set; } 
     public DateTime Timestamp { get; set;} 
    } 
} 

コマンド:

PM> add-migration NestProtectDevices -Context NestProtectDevices 
No parameterless constructor was found on 'NestProtectDevices'. Either add a parameterless constructor to 'NestProtectDevices' or add an implementation of 'IDbContextFactory<NestProtectDevices>' in the same assembly as 'NestProtectDevices'. 
+0

エラーが原因で問題が正確にわからないのですか? –

+0

私はそれをパラメータのないコンストラクタにすると、それはオプションが供給される必要があることをエラーします。 – Ronny

+0

私はまだこれについての答えを探しています。 – Ronny

答えて

5
using DataAccessPostgreSqlProvider; 
    using DomainModel; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Threading.Tasks; 
    using Microsoft.EntityFrameworkCore; 
    using DomainModel.Model; 

    namespace iConnect.Models.Nest 
    { 
     public class NestProtectDevices : DomainModelPostgreSqlContext 
     { 
      public NestProtectDevices(DbContextOptions<DomainModelPostgreSqlContext> options) : base(options) 
      { 
      } 
      public DbSet<Device> Devices { get; set; } 

     } 
public class Device 
{ 
      public long DeviceId { get; set; } 
      public long UserId { get; set; } 
      public int CompanyId { get; set; } 
      public long StructureId { get; set; } 
      public long WhereId { get; set; } 
      public string Name { get; set; } 
      public string NameLong { get; set; } 
      public bool IsOnline { get; set; } 
      public int BatteryHealth { get; set; } 
      public int CoAlarmState { get; set; } 
      public int SmokeAlarmState { get; set; } 
      public string UiColorState { get; set; } 
      public bool IsManualTestActive { get; set; } 
      public DateTime LastManualTestTime { get; set; } 
      public DateTime Timestamp { get; set;} 
    } 
} 

このDataAccessPostgreSqlProviderはその後、私はそれがよりこのように設定する必要があると考えている通常のSQLプロバイダよりも完全に異なっている場合を除き。ところであなたのポストのリンクはいいじゃない。

+0

リンクが更新されました。応答していただきありがとうございます。私はそれを試して、それが動作するかどうかを見てみましょう。 https://damienbod.com/2016/01/11/asp-net-5-with-postgresql-and-entity-framework-7/ – Ronny

2

エラーはかなり役に立ちます。クラスにパラメータのないコンストラクタを追加します。既に追加したコンストラクタに追加します。

public NestProtectDevices() 
{ 
} 
+0

私はまた、SqliteとMS SQL Serverデータプロバイダでこのエラーが発生しました。パラメータのないコンストラクタを追加すると、効果的に役立ちます。 –

関連する問題