分配给ViewModel变量的SQLite数据库查询

时间:2014-07-17 22:27:11

标签: c# sqlite syntax

任何人都可以告诉我为什么我会得到"名称'车辆'在当前背景下不存在"从这段代码?它是在我尝试连接页眉的字符串的最后一行。请注意我是c#的新手,Windows Store应用程序的新用户,SQLite的新手,还有更多。我无法理解我是否只是查询数据库并分配值以构建' Vehicle'为什么它不会在下一个声明中承认它?

public MainPrintPage()
    {
        this.InitializeComponent();
        MaintenancesViewModel = new maintenancesViewModel();
        Maintenances = MaintenancesViewModel.GetMaintenances(App.CurrentVehicleId);
        MaintenancesViewSource2.Source = Maintenances;

        using (var db = new SQLite.SQLiteConnection(App.DBPath))
        {
            var query = db.Table<vehicles>().Where(
                    p1 => p1.VehID == App.CurrentVehicleId).SingleOrDefault();


                var Vehicle = new vehicleViewModel();

                    Vehicle.VehID = query.VehID;
                    Vehicle.VehYear = query.VehYear;
                    Vehicle.VehMake = query.VehMake;
                    Vehicle.VehModel = query.VehModel;

        }

        string PageTitle = string.Format("{0} Maintenance Records", Vehicle.VehYear + " " + Vehicle.VehMake + " " + Vehicle.VehModel);
    }

2 个答案:

答案 0 :(得分:2)

Vehicle在您的using语句中声明,它超出了最后一行的范围。尝试在Vehicle声明之前声明using

答案 1 :(得分:1)

将变量声明在using范围之外并在其中分配。您必须为其指定一个null或new的值,否则您将得到一个未初始化的值#34;错误。

vehicleViewModel Vehicle = null;
using (var db = new SQLite.SQLiteConnection(App.DBPath))
{
  ...

  Vehicle = new vehicleViewModel();
  ...
}

旁注,您的命名约定与绝大多数C#程序员使用的方式相反。相反,类名的第一个字母应为大写,局部变量应为小写,如下所示:

VehicleViewModel vehicle = null;
vehicle = new VehicleViewModel();