読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマーをやっています。好きなツール:WorkFlowy、好きな言語:C#、好きなサービス:Backlog、好きなAWS:AWS Lambda。

PostgreSQLでASP.NET Dynamic Dataサイトを構築するためにやったこと【ご注意:失敗に終わりました】

.NET ASP.NET Dynamic Data PostgreSQL

PostgreSQLでASP.NET Dynamic Dataサイトを構築することを試みましたが、失敗に終わりました。誰かの役にたつかもしれないので、試行錯誤の記録を残しておきます。

追記:後日成功しました。手順はこちらをご覧ください。
PostgreSQLでASP.NET Dynamic Dataサイトを構築する - プログラマーな日々
以前一度は失敗していますが、後日ASP.NET Dynamic Dataサイトの構築に成功したので、手順を残しておきます。 ...

テーブルの作成

まず、テーブルを作成しました。

CREATE TABLE hoge_table
(
  hoge_id smallint NOT NULL,
  huga_id integer NOT NULL,
  hoge_name character varying(255),
  del_flg character varying(1) DEFAULT '0'::character varying,
  update_flg boolean,
  update_datetime timestamp without time zone,
  CONSTRAINT hoge_table_pkey PRIMARY KEY (hoge_id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE hoge_table OWNER TO postgres;

CREATE TABLE fuga_table
(
  fuga_id integer NOT NULL,
  fuga_name character varying(255),
  CONSTRAINT fuga_table_pkey PRIMARY KEY (fuga_id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE fuga_table OWNER TO postgres;

プロジェクトの作成

ASP.NET Dynamic Dataは、データ・モデルとして

  1. ADO.NET Entity Framework
  2. LINQ to SQL

のいずれかを使用できます。

ADO.NET Entity Frameworkを使用する場合は「Dynamic Data エンティティWebサイト」を、LINQ TO SQLの場合は「Dynamic Data Webサイト」をプロジェクト作成時に選択します。

まずは「Dynamic Data エンティティWebサイト」を選択しました。

データ・モデルの作成

App_Codeフォルダの作成
ADO.NET Entity Data Modelの作成

App_Codeフォルダを右クリックし、[新しい項目から追加]→ADO.NET Entity Data Model。

  1. ウィザードが起動したら、[データベースから生成]を選択。
  2. [新しい接続]をクリック

dot connect for PostgreSQLを参照設定しても、SQL Serverの接続設定しかでてこない。

  • 念のためビルド後に再試行したが、結果は同じ。
  • Npgsqlを参照設定し、同じことを試したが結果は同じ。

プロジェクト作成のやり直し

先ほどのプロジェクトを削除して今度は「Dynamic Data Webサイト」で作成しました。

App_Codeフォルダの作成
Linq to SQL クラスの作成
  1. App_Codeフォルダを右クリックし、[新しい項目から追加]→Linq to SQL クラス。
  2. サーバーエクスプローラーからLinq to SQL クラスのデザイナにテーブルをドラッグ&ドロップ。エラーが発生。「選択されたオブジェクトにはサポート外のデータ プロバイダが使用されています。」
  • dot connect for PostgreSQLを参照設定→ビルド→ドラッグ&ドロップしても同じエラーが発生。
  • Npgsqlを参照設定→ビルド→ドラッグ&ドロップしても同じエラーが発生。

追加情報

斜め読みですが、以下のページに「LinqConnect」を使えばASP.NET Dynamic Dataが実装できると書いてあるようです。
PostgreSQL: Devart ADO.NET Data Providers Deliver Advanced Model-First and Database-First Support and ...

ですが、LinqConnectは残念ながら有償でした。
LINQ to SQL Compatible ORM solution | LinqConnect
LinqConnect is a fast, lightweight, and easy to use LINQ to SQL compatible ORM solution, supporting SQL Server, Oracle, MySQL, PostgreSQL, and SQLite. It allows you to use efficient and powerful data access for your .NET Framework, Metro, Silverlight, or Windows Phone applications supporting Code-First, Model-First, Database-First or mixed approaches. ...

参考

DBアプリをコーディングレスで構築する「ASP.NET Dynamic Data」 − @IT
そして、第1弾となる今回は、まずASP.NET Dynamic Data(以降、Dynamic Data)について解説する。 ...

チュートリアル : スキャフォールディングを使用した新しい Dynamic Data Web サイトの作成
このチュートリアルでは、ASP.NET 動的データを使用する基本的な Web サイトの作成方法について説明します。 動的データを使用すると、コーディングをほとんどまたは一切変更せずに、データ ドリブン Web サイトを作成できます。 ...

Dynamic DataをSqlServer以外で作ってみる - けさらんぱさらん
Dynamic DataでさくっとWebアプリを作りたいのですが DBはSqlServerじゃないんだよね〜ってことはあると思うんですよ (つ〜か今そうなんですよ) じゃ〜どうやって作るんでしたっけってことで試してみました。 ...