これが機能するようになりました。Linux Ubuntu 10 / Apache2 サーバー上の Silverlight4 コンテンツを含む ASP.NET4 サイト。コンテンツは Visual Studio 2010 を使用して開発されています。VS2008 も正常に動作するはずです。
サーバ:
- Apache2 と MySQL で Linux サーバーをセットアップします。これに関するガイドはたくさんあります。
- MySQL が開発用 PC からアクセス可能であり、必要に応じてインターネットからもアクセスできることを確認してください。詳細については、こちらを参照してください:アクセス拒否エラーの原因.
- データベース テーブル構造をセットアップし、後でテストするためにいくつかのコンテンツを追加します。この例では、列「name」を持つテーブル「persons」があると想定しています。
- Silverlight はクライアント側のテクノロジであるため、簡単に使用でき、単純な HTML ページでアプリケーションをホストできます。
- Silverlight と MySQL の間に Web サービスが必要です。Microsoft の WCF RIA は 1 つのフレーバーですが、.NET が必要です。プラス面として、ASP.NET4 ページもホストできます。これをセットアップするための完全なガイドは次のとおりです。MySqlメンバーシップを使用したUbuntuでAsp.Net 4.0およびMVC2を使用してMono 2.8をセットアップする
ビジュアルスタジオ:
- 最新のMySQL Connector/Netをインストールし、VS を再起動します
- MySQL データベースをデータ ソースとして追加する
- サーバー エクスプローラーを開く -> データ接続の追加 -> [MySQL データベース] を選択します。
- 資格情報を入力して接続をテストする
MySQL アクセスを使用してサイトをセットアップする:
ここに役立つガイドがあります:WCF RIA対応SL4アプリケーションへのステップバイステップガイドとエンティティフレームワーク
- Silverlight プロジェクトを作成または開きます。
- サーバー側プロジェクトの名前は通常、'ProjectName.Web' です。
- クライアント側のプロジェクトは、通常、'ProjectName' という名前です。
- 「ADO.NET Entity Data Model」をサーバー プロジェクトに追加します。これがデータベース構造のモデルになります。
- 「データベースから生成」を選択
- 作成した MySQL データベース接続を選択します
- アクセスするテーブルを選択します
- 続行する前に、今すぐソリューションを構築してください。
- 「ドメイン サービス クラス」をサーバー プロジェクトに追加します。「フードドメイン」。これにより、クライアント側の Silverlight コードでデータベース エンティティを使用できるようになります。
- [使用可能な DataContext/ObjectContext クラス:] で、前の手順で作成した Entity Framework モデルを選択します。
- アクセスしたいエンティティをチェックし、必要に応じて「編集を有効にする」をチェックします
- 「メタデータに関連付けられたクラスを生成する」にチェックを入れます
- サーバー プロジェクトの「FooDomain」に基づいて、ソリューションを再度ビルドして「FooDomainContext」を生成します。
テスト:
MySQL から Silverlight にデータを取得しましょう。列名が「name」の「persons」という名前のテーブルがあると仮定すると、リスト ボックスをバインドして人物の名前を表示できます。
まず、Silverlight ページを追加します。「ホーム」としましょう。Home.xaml に次を追加します。
<ListBox x:Name="TestList" Width="100" />
Home.xaml.cs ファイルに次を追加します。
public partial class Home : Page
{
public Home()
{
InitializeComponent();
Loaded += Home_Loaded;
}
void Home_Loaded(object sender, RoutedEventArgs e)
{
var context = new FooDomainContext();
var query = context.Load(context.GetPersonsQuery());
TestList.ItemsSource = query.Entities;
TestList.DisplayMemberPath = "name";
}
}
ここでは、ドメイン サービスに「FooDomain」という名前を付けたと仮定します。これにより、使用される「FooDomainContext」クラスが生成されます。
すべてが適切に設定されていれば、Silverlight プロジェクトの実行時に人物名のリストが表示されるはずです。
編集: ASP.NET はオプションではありませんが、私の例で使用されている WCF RIA Web サービスには必須です。