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

【Cocos2d-x】Cocos2d-xセットアップ

メモ。Xcodeはインストール済、OSはMac10.9.5 必要なものをダウンロード&解凍

記事を読む

no image

YomiganaWPFTextBox

こんにちは。 WPFでテキストボックスに入力した内容をカナ変換する方法について今日は掲載します

記事を読む

no image

UWPでMicrosoft.OData.Clientを使用する時、LINQ式でエラー

UWPからは非同期メソッドを実行する必要があるので、通常はExecuteAsyncをコールするが、

記事を読む

【ストアアプリ】画面遷移の基本①

こんにちは。 Windowsストアアプリをぼちぼち触り始めています。 WindowsRuntim

記事を読む

UWPをHockeyApp対応させる

走り書きメモ。 UWPをHockeyApp対応させるためにはNuGetパッケージを使ってモジュール

記事を読む

no image

Visual Studio 2017 Version15.2 にアップデート後、Xamarin.iOS でビルドエラーが発生時の回避メモ

環境 Visual Studio Enterprise 2017 Version 15.2

記事を読む

no image

【iPhoneアプリ】Nend広告の実装メモ

広告枠の作成 https://www.nend.net/ 審査前アプリのURL iPhon

記事を読む

no image

Windows 10 IoT 系の概要、エディション、入手方法などを一度整理

Windows 10 IoT にここ最近振り回されているので、ここまで解釈した内容にて、まとメモ 正

記事を読む

no image

【TFS2013】Visual Studio 2005 Professional から TFS2013へ接続

こんにちは。 私の周りではいまだにレガシーな開発環境を使いつづけているプロジェクトが多いです。

記事を読む

Visual Studio Team Services で 新規プロジェクトを作成するときの自分用初期設定メモ

新規プロジェクト作成 Version control -> Git Work item proc

記事を読む

Message

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

PAGE TOP ↑