4

私の質問はかなりシンプルで、多くの回答を探していますが、解決策を見つけるのに失敗しました。しかしこれは珍しいシナリオのようには見えないので、単純なものが見落とされたり、私の見解を見落としてしまった参考文献があると、いくつかの指針に感謝します。ここに行く....Net CoreリバースエンジニアリングとデータベースDNS接続

私の新しい.Netコアプロジェクトを通じて既存のオフサイトデータベースに接続しようとしている。 https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html

これらの手順はローカルマシンのdbで動作しますが、オフサイトサーバー用のデータベースDNSに接続文字列を指定してScaffold-DbContextを実行すると、次のようになります。コンテキストは存在しません。だから私のコンテキストクラスファイルは次のようになります。

using System; 
using Microsoft.EntityFrameworkCore; 
using Microsoft.EntityFrameworkCore.Metadata; 

namespace CensusApi.Models 
{ 
    public partial class CensusDbContext : DbContext 
    { 
     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     #warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings. 
     optionsBuilder.UseSqlServer(@"Server=database.dns.org,[port];Database=mydatabase;Integrated Security=False;User ID=myuser;Password=mypassword;"); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
    } 

    // Unable to generate entity type for table 'dbo.LANDING_DEMOGRAPHICS_2010'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LANDING_ECONOMIC_2007_2011'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LANDING_STATE_FIPS'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LANDING_ZIP_STATE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.SAMAIN_ZIP_STATE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_HOUSEHOLDS'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_HOUSING_OCCUPANCY'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_MEDIAN_AGE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_MEDIAN_INCOME'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_POPULATION'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_POPULATION_BY_RANGE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_RACE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_RACE_HISPANIC_AND_LATINO'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_RELATIONSHIP'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_ZIP_STATE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LogShipStatus'. Please see the warning messages. 
    } 
} 

ErrorListウィンドウには、上記のコードの11行目に#warning(接続文字列に機密情報を保護するために、すなわち警告)を指します。このリバースエンジニアリングを行った後の次のステップは、接続文字列を再配置することであり、#ワーキングはリバースエンジニアリングプロセスの妨げにならない一般的な警告のようです。

私が試した認証には、saユーザーと制限付きユーザーが含まれています。両方に同じ結果があるので、権限の問題ではないようです。

外部のサーバーに接続するために使用する方法やフレームワークはありますか?

ご意見やご感想をいただければ幸いです。

+0

返信いただきありがとうございます。Tseng。しかし、Scaffold-DbContextコマンドで接続文字列が必要なので、接続文字列を移動しても問題は解決しません。接続文字列がStartup.csに移動されると、それを再スキャフォールドするための参照方法がありますか、または修正されたコンテキストを使用して足場を更新する方法はありますか? –

+0

あなたのコンテキストはWebプロジェクトと同じアプリケーションですか?現在、コマンドラインツールは、コンテキストがアプリケーション内にあり、クラスライブラリで動作しない場合にのみ機能するという制限があります。回避策がありますがhttps://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html#targeting-class-library-projects-is-not-supported – Tseng

+0

エンティティの生成に成功したデータベースはありますかあなたがDSN経由で接続しようとしているのと同じ(スキーマ単位)ですか? –

答えて

22

テーブルに主キーがあることを確認してください。

データベース内の1つのテーブルだけでこの正確なエラーメッセージが表示されていました。私は主キーを忘れてしまったと認識し、再度DbScaffoldコマンドを実行した後に正常に動作しました。

関連する問題