質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

2回答

1242閲覧

DevOpsのASP.NET Coreプロジェクトから、AzureSQLデータベースの接続追加について

JanTh1989

総合スコア87

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2019/07/09 05:09

ASP.NET CoreのWeb App プロジェクトを、DevOps Projectsより作成し、ローカルに複製しました。
プロジェクトは、生成時に「Add a Database」を付けていないプロジェクトになります。
そのプロジェクトをAzureのSQL Databaseで作成したデータベースに接続させる方法はありますでしょうか。

試してみたこと

①Visual Studioのasp-core-dotnet-coreソリューションの、Connected Servieから接続済サービスの追加
⇒どのサービスが目的に沿ったものなのか判断が付きませんでした。

②Startup.csにコードを追加
⇒以下のチュートリアルの「運用環境の SQL Database に接続する」実施を試みようとしました。
https://docs.microsoft.com/ja-jp/azure/app-service/app-service-web-tutorial-dotnetcore-sqldb
結果としましては、当初のプロジェクト作成手順が異なるためか、Startup.csの構造が違うようで、チュートリアルと同様の手順を踏むことができませんでした。
プロジェクト生成時に「Add a Database」を付けていないことで、Startup.csに変化もあるのかと考えております。※1

C#

1Startup.csのコード 2 3namespace aspnet_core_dotnet_core 4{ 5 public class Startup 6 { 7 public Startup(IConfiguration configuration) 8 { 9 Configuration = configuration; 10 } 11 12 public IConfiguration Configuration { get; } 13 14 // This method gets called by the runtime. Use this method to add services to the container. 15 public void ConfigureServices(IServiceCollection services) 16 { 17 services.Configure<CookiePolicyOptions>(options => 18 { 19 // This lambda determines whether user consent for non-essential cookies is needed for a given request. 20 options.CheckConsentNeeded = context => true; 21 options.MinimumSameSitePolicy = SameSiteMode.None; 22 }); 23 24 25 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 26 } 27 28 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 29 public void Configure(IApplicationBuilder app, IHostingEnvironment env) 30 { 31 if (env.IsDevelopment()) 32 { 33 app.UseDeveloperExceptionPage(); 34 } 35 else 36 { 37 app.UseExceptionHandler("/Error"); 38 } 39 40 app.UseStaticFiles(); 41 app.UseCookiePolicy(); 42 43 app.UseMvc(); 44 } 45 } 46}

※1
プロジェクトへの「Add a Database」に関しましては、別件の質問で挙げているのですが、
データベースサーバのLocationの候補が出ないことで、プロジェクト作成失敗になってしまいます。
そのため、「Add a Database」をしないプロジェクトからのAzure SQL Database接続を
考えているのですが、行き詰ってしまっている状況になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

あるいは、このページを参考にするのはどうでしょう。

ASP.NET Core - 既存のデータベース - EF Core の概要 | Microsoft Docs

投稿2019/07/11 06:57

NakamuraYoichi

総合スコア374

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JanTh1989

2019/07/12 02:32

追加の回答ありがとうございます。 こちらも参考にさせていただきます。
guest

0

ベストアンサー

appsettings.json に接続文字列を追加します。

json

1{ 2 "ConnectionStrings": { 3 "MyDbConnection" : "Server=tcp:hoge.database.windows.net,1433;..." 4 }, 5...

プロジェクトにデータ コンテキスト クラスを追加します。

C#

1 public class MyDatabaseContext : DbContext 2 { 3 public MyDatabaseContext(DbContextOptions options) : base(options) 4 { 5 } 6 }

Startup.cs でデータ コンテキスト クラスを登録します。

C#

1 public void ConfigureServices(IServiceCollection services) 2 { 3 ... 4 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 5 6 var connectionString = Configuration.GetConnectionString("MyDbConnection"); 7 services.AddDbContext<MyDatabaseContext>(options => 8 options.UseSqlServer(connectionString)); 9 }

モデル クラスを作成します。実際のデータベース定義に合わせて作ってください。

C#

1 public class MyItem 2 { 3 [Key] 4 public string Id { get; set; } 5 public string Title { get; set; } 6 public string Detail { get; set; } 7 }

ページをスキャフォールディングする。

  1. ソリューション エクスプローラー で Pages フォルダを右クリック
  2. 追加 > 新規スキャフォールディングアイテム を選択
  3. Entity Framework を使用する Razor ページ を選択
  • Razor ページ名: MyItemList
  • テンプレート: List
  • モデル クラス: MyItem
  • データ コンテキスト クラス: MyDatabaseContext

データ コンテキスト クラスにモデル クラスの DbSet が追加されたり、作成されるページのコンストラクタにデータ コンテキスト クラスを受け取るコードが書かれたりします。

これでとりあえず動くと思います、たぶん。

投稿2019/07/11 06:57

NakamuraYoichi

総合スコア374

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JanTh1989

2019/07/12 02:30

ご回答ありがとうございました。 上記の内容を元に、ASP.NET Coreのソリューションに各所対応を行った結果、無事SQLサーバ接続ができました。 テーブル構成については、今後検討のため仮作りになりますが、データ取得も行えました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問