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のScrollViewerでスクロール位置の同期を行うメモ

複数のScrollViewerのスクロール位置を同期したい場合、WPFではScrollChanged

記事を読む

Xamarin Studio から Visual Studio for Mac へ変更してから、”The “XamlCTask” task failed unexpectedly.” が発生。

Visual Studio for Mac がGAしたので、インストールしてみた。 それまで開発して

記事を読む

no image

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

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

記事を読む

Flowで毎月の定期タスク設定

Flow を使い始めてみた。 Requrrenceで時間をトリガーにすることが出来るがSecond

記事を読む

【iPhoneアプリ】リリース手順〜審査完了後〜

前回からの続き。 中身が無いアプリだったのでリジェクトされると思いきや 審査に通ってしま

記事を読む

WordPressでスパムコメント対策

WordPressのスパムコメント対策を行ったのでメモ。 標準でAkismetがインストール済み(

記事を読む

no image

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

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

記事を読む

【XAML】フォントサイズを自動縮小して全体を表示

Viewboxを親にするだけ。 拡大・縮小方法はStretch, StretchDirec

記事を読む

no image

‘System.Windows.Navigation.BaseUriHelper’ のタイプ初期化子が例外をスローしました。

作成した.NETアプリケーション(WPF)が起動しない。 今回は構成ファイル(app.config)

記事を読む

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

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

記事を読む

Message

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

PAGE TOP ↑