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にタッチを持ってかれてる感じ。 カスタ

記事を読む

【ストアアプリ】画像の光学式ズーム

こんにちは。 スマートデバイスといえばタッチ操作、ということで 今日はWindowsストアアプリ

記事を読む

Xamarin.Forms出力バイナリのメモ

iOS -> .ipa, Android -> .apk ipaファイル作成方法 ソリュー

記事を読む

拡張メソッドは、非ジェネリック静的クラスで定義される必要があります

単純にメッセージどおり。 public static class BaseExtensi

記事を読む

【Cocos2d-x】iPhone実機でプロジェクトを動かすまで

Macを購入してCocos2d-xデビューしたが、 iPhone実機で動かすまでをメモ

記事を読む

no image

【XAML/VB.NET】XAMLファイルを帳票フォーマットとして使用する

掲題について。結論としてはFixedPageをルートとするXAMLファイルを XamlReader

記事を読む

no image

UWPでOSバージョン番号の取得

Windows.System.Profile.AnalyticsInfo.VersionInfo.D

記事を読む

no image

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

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

記事を読む

no image

Microsoft.Expression.Encoderで動画のフレーム画像を取得

動画ファイルから指定したフレーム画像を取得する。 Microsoft.Expression.Enco

記事を読む

【ストアアプリ】トースト通知の基本

Windowsストアアプリ開発での基本。 トースト通知について投稿します。 Pack

記事を読む

Message

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

PAGE TOP ↑