0

このコードで:

var locationsInDB = from TaSLs_SQLCELocationDataDefinition location in
                        TaSLs_SQLCELocation.TaSLs_SQLCELocationDataDefinitions
                    where location.SavedToCloud = false
                    select location;

...わかりました、

"* 非静的フィールド、メソッド、またはプロパティ 'TaSLS_PhoneApp.MainPage.TaSLs_SQLCELocation' にはオブジェクト参照が必要です*"

TaSLs_SQLCELocationDataContext を別のクラスで宣言しました。

public class TaSLs_SQLCELocationDataContext : DataContext
{
    public static string DBConnectionString = "Data Source=isostore:/gr8GooglyMoogly.sdf";

    public TaSLs_SQLCELocationDataContext(string connectionString)
        : base(connectionString)
    { }

    public Table<TaSLs_SQLCELocationDataDefinition> TaSLs_SQLCELocationDataDefinitions;
}

DataContext を実装しているため、TaSLs_SQLCELocationDataContext を static にできません

そのクラスを次のようにインスタンス化すると:

TaSLs_SQLCELocationDataContext tsldc = new TaSLs_SQLCELocationDataContext();
var locationsInDB = from TaSLs_SQLCELocationDataDefinition location in
                    tsldc.TaSLs_SQLCELocationDataDefinitions
                    where location.SavedToCloud = false
                    select location;

...次に、

「*'TaSLS_PhoneApp.TaSLs_Data.TaSLs_SQLCELocationDataContext' には、0 引数を取るコンストラクターが含まれていません*」

それはどのような引数を期待していますか?

4

3 に答える 3

3

接続文字列を期待しています

于 2013-01-03T11:31:18.827 に答える
1

コンストラクターは、コンストラクターによって定義された接続文字列を期待しています。

public TaSLs_SQLCELocationDataContext(string connectionString)

それでも、コードでテーブルをインスタンス化しないため、後でnull参照例外が発生します。

于 2013-01-03T11:35:18.120 に答える
1

最初の質問については、「なぜ呼び出し元と同じクラスで宣言された public 型をインスタンス化する必要があるのですか?」クラス名 (この場合は「TaSLs_SQLCELocation」) を省略し、this キーワードを介してクラス プロパティにアクセスする必要があります。

ただし、プロパティが定義されているクラス内からプロパティ「TaSLs_SQLCELocationDataDefinitions」にアクセスする場合にのみ機能します-あなたの場合は「TaSLs_SQLCELocationDataContext」

これを試して:

var locationsInDB = from TaSLs_SQLCELocationDataDefinition location in
                    this.TaSLs_SQLCELocationDataDefinitions
                where location.SavedToCloud = false
                select location;
于 2013-01-03T11:46:51.777 に答える