0

MVVMLightとSQLServerCEをデータベースとして使用してWP7アプリケーションを作成しようとしています。これを実現するために、sqlmetal.exe(1)を使用してデータコンテキストを生成しました。

携帯電話でアプリケーションを実行すれば、これは問題なく機能します。しかし、デザインタイムデータを表示しようとするとDataContext、デザインタイムコードにのインスタンスを作成できません。これはできますか?私が試したもう1つの方法は、のインスタンスを作成することでしたTable<MyDataObject>が、System.Data.Linq.Tableにはコンストラクターがありません。

したがって、私の質問は、DataContextコードから自分のインスタンスを作成することが可能かどうか、または設計時のデータを失うことなくデータベースとインターフェイスする別の方法があるかどうかです。

(1)実際には、ライブラリプロジェクトを使用して別の方法を使用して、デザイナーファイルを視覚的にデザインしてWP7プロジェクトにコピーできるようにしました。私が正しければ、結果は同じになります。

4

1 に答える 1

0

何度も失敗した後、プログラムでDataContextオブジェクトをモックする方法を見つけることができませんでした。だから私は自分の問題を解決する別の方法でそれをしました。

データベースからデータをクエリするためのサービスインターフェイスを作成しました。SQL CEデータベースのすべてのテーブルについて、手動で関数を作成する必要がありました。

public interface IPayDataService {
    IQueryable<Account> GetAccounts();
    IQueryable<User> GetUsers();
    IQueryable<PayEntry> GetEntries();
}

実際のデータオブジェクトでは、対応するテーブルが渡されます。デザイン時オブジェクトでは、コードでオブジェクトを作成し、IQueryableviaを返しAsQueryable()ます。を使用IQueryableして、クエリが最適化されたままであることを確認します(この場合はLinq2Sqlによる)。

これは理想的とは言えず、より多くの手動コード記述が必要ですが、設計時のデータを再び機能させることができました。

于 2012-09-23T10:04:47.413 に答える