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;
}

我不能将 TaSLs_SQLCELocationDataContext 设为静态,因为它实现了 DataContext

如果我像这样实例化该类:

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)

尽管如此,由于您没有在代码中实例化您的表,您稍后会得到一个空引用异常。

于 2013-01-03T11:35:18.120 回答
1

对于您的第一个问题“为什么在调用它的同一类中声明的公共类型需要实例化?” 您需要省略类名 - 在本例中为“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 回答