UWPとAzure Web AppsでOData

公開日: : 最終更新日:2016/07/16 Blog, Microsoft , , , , , ,

超メモ。走り書き。
Azure上にSQLデータベースコードファーストなAPIをODataで作成する。
UWPからODataClientを利用し、出来る限り最小限の手順でクラサバ間のデータアクセスを試みるメモ。

バックエンド(Azure + ASP.NET WebAPI + OData + EntityFramework Code First)

プロジェクト作成

  • [プロジェクト] -> [新規作成] -> [プロジェクト] -> [ASP.NET Web Application(.NET Framework)]
  • ASP.NET 4.6.1 テンプレート:Web API (or 空+WebAPIにチェック)
  • AppService作成時にSQLデータベースは作成しない(何故かこの環境だと失敗する…)
    “No registered resource provider found for location …”

モデル作成

  • Modelsを適当に作成しておく

コントローラー作成(スキャフォールディングで作ってみる)

  • スキャフォールディング使用にあたって、ここで一度ビルドしておく
  • 拡張機能と更新プログラムでインストール:OData v4 Web API Scaffolding
  • Controllers -> [追加] -> [新規スキャフォールディングアイテム] -> [Microsoft OData v4 Web API Controller Using Entity Framework]
  • 対象のモデルと任意のコンテキスト入力

EdmModelの登録

public static void Register(HttpConfiguration config) 
{ 
    config.MapODataServiceRoute( 
        "ODataRoute", 
        "odata", 
        GetEdmModel()); 
} 

public static IEdmModel GetEdmModel() 
{ 
    var builder = new ODataConventionModelBuilder(); 
    builder.Namespace = typeof(WebApiConfig).Namespace; 
    builder.EntitySet<Contact>("Contacts"); 
    return builder.GetEdmModel(); 
} 

マイグレーション

  • [ツール] -> [NuGetパッケージマネージャー] -> [パッケージマネージャーコンソール]で以下を入力
  • enable-migrations
  • add-migration Initial
  • Migrations\Configration.csファイルを編集し、初期データを準備
protected override void Seed(ContactManager.Models.ContactManagerContext context)
{
    context.Contacts.AddOrUpdate(p => p.Name,
       new Contact
       {
           Name = "Debra Garcia",
           ...
       },
       ...
        new Contact
        {
            Name = "Diliana Alexieva-Bosseva",
            ...
        }
        );
}
  • パッケージマネージャーコンソールで以下を入力
  • update-database

SQLデータベース作成

  • AzureポータルからSQLデータベースの新規作成を行う
  • 管理画面から接続文字列をコピー

Azureへデプロイ

  • [公開] -> [Microsoft Azure App Service] -> 設定タブ.データベースで作成したSQLデータベースの接続文字列を貼り付け
  • データベースを更新する、にチェック
  • 発行

クライアント(UWPアプリ)

プロジェクト作成

  • [プロジェクト] -> [新規作成] -> [プロジェクト] -> [空白のアプリ(ユニバーサルWindows)]

拡張機能と更新プログラムでインストール:OData v4 Client Code Generator

OData Clientの追加とT4テンプレート実行

  • [追加] -> [新しい項目] で、[OData Client]を追加
  • 追加されたttファイルの MetadataDocumentUri にデプロイしたWebAppsのURL + “/odata”を指定
  • 保存するとWebApps上で公開したエンティティ等が作成される。

データアクセス

  • 参照
private async void Button_Click(object sender, RoutedEventArgs e)
{
    var context = new Container(new Uri("http://xxx.azurewebsites.net/odata"));
    foreach(var record in await context.Contacts.ExecuteAsync())
    {
        list.Items.Add(record.Name);
    }
}

[参考]
神様1
神様2
http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint
https://azure.microsoft.com/ja-jp/documentation/articles/web-sites-dotnet-rest-service-aspnet-api-sql-database/
https://azure.microsoft.com/ja-jp/documentation/articles/sql-database-develop-dotnet-simple/

関連記事

no image

UWP+IoT Coreのシリアル通信メモ

Windows10 IoT + Raspberry Pi を始めようとしているのだが、どうもセンサー

記事を読む

no image

【ストアアプリ】基本的な印刷手順

Windowsストアアプリにて印刷を行う方法を紹介します。 印刷を行うには印刷コントラ

記事を読む

no image

No registered resource provider found for location ‘Japan East’ and API version ‘2.0’ for type ‘servers’.

Visual Studio から Azure Web Apps をデプロイするときに発生したエラーの

記事を読む

no image

FixedDocumentの印刷およびXPS形式での保存

こんにちは。 以前、XAMLファイルを帳票テンプレートとして動的ロードする記事を掲載しました。

記事を読む

【ストアアプリ】バッジ通知(BadgeUpdateManager)について

こんにちは。 前回のタイル通知にバッジ通知を追加しました。 以下を参考に。 https

記事を読む

no image

RPi3 OmxPlayer / VLC Player 連続再生2回目から映像が乱れる問題

Raspberry Pi 3 Model の Ubuntu や Raspbian で OmxPlay

記事を読む

【.NET】16進数文字列から色を設定する

文字列→Colorクラスへの変換メモ プログラム上でFromArgbメソッドに16

記事を読む

PHP executable not found. Install PHP 7 and add it to your PATH or set the php.executablePath setting

Visual Studio Code へ PHP IntelliSense 拡張をインストールし

記事を読む

no image

【Xcode】Capabilities全項目【v6.1時点】

Capabilitiesの各項目が何を示しているのか よくわからなかった、かつ日本語のサイトが少な

記事を読む

【iPhoneアプリ】リリース手順〜審査申し込み〜

初めてiPhoneアプリを作成したがリリース手順が 手元の参考書と全然違って困ったのでメモ。

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑