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

Xamarin.Forms で ScrollView の中に Map を配置したとき、Androidで地図のスクロールが出来なくなる

iOSは問題ないけど、AndroidはScrollViewにタッチを持ってかれてる感じ。 カスタ

記事を読む

Visual Studio Team Services ダッシュボードを自動更新する

Visual Studio Team Services のダッシュボードでプロジェクトや運用状況のサ

記事を読む

no image

【VB.NET】DataGridViewで行の最大高を設定

DataGridViewにおける行の最大高さを設定するメモ 最大高さに満たない場合は内容を全て表示

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

Minnow Board Turbot + Windows 10 IoT Core をSSD上で動作させる

MinnowBoard は SATAが搭載されているので、SSDなどが利用できる。 通常はSDカード

記事を読む

no image

【.NET】イベントのサブスクライブとサブスクライブ解除

.NETでイベントをハンドルする方法 サブスクライブ void CustomEven

記事を読む

no image

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

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

記事を読む

no image

【.NET】正規表現の復習

正規表現エンジン System.Text.RegularExpressions.Regexオブジェ

記事を読む

【.NET】【WPF/XAML】ローカルPDFを画面に表示する

[crayon-5c40f1e409d9e878601950/] [vb] Public

記事を読む

Message

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

PAGE TOP ↑