我在Windows phone7应用程序中使用Vici.CoolStorage来访问SQLite数据库。我在这一行上得到了一个空引用异常:
CSList<Regimen> regimens = Regimen.List();我的数据库中有两个表:
CREATE TABLE Regimen (
ID INTEGER PRIMARY KEY,
Name TEXT(50) NOT NULL
);
CREATE TABLE WorkoutDay (
ID INTEGER PRIMARY KEY,
DayNumber INTEGER NOT NULL,
RegimenID INTEGER REFERENCES Regimen(ID)
);相关模型的映射为:
using Vici.CoolStorage;
namespace MyApp.Core.Domain
{
[MapTo("Regimen")]
public class Regimen : CSObject<Regimen,int>
{
public int ID
{
get { return (int)GetField("ID"); }
set { SetField("ID", value); }
}
public string Name
{
get { return (string)GetField("Name"); }
set { SetField("Name", value); }
}
[OneToMany(LocalKey = "ID", ForeignKey = "RegimenID")]
public CSList WorkoutDays
{
get { return (CSList)GetField("WorkoutDays"); }
}
}
}
using Vici.CoolStorage;
namespace MyApp.Core.Domain
{
[MapTo("WorkoutDay")]
public class WorkoutDay : CSObject<WorkoutDay,int>
{
public int ID
{
get { return (int)GetField("ID"); }
set { SetField("ID", value); }
}
public int DayNumber
{
get { return (int)GetField("DayNumber"); }
set { SetField("DayNumber", value); }
}
[ManyToOne(LocalKey="RegimenID", ForeignKey="ID")]
public Regimen Regimen
{
get { return (Regimen)GetField("Regimen"); }
set { SetField("Regimen", value);}
}
}
}如果我注释掉方案模型中的OneToMany关系,它工作得很好。我找不到我的映射出了什么问题。
发布于 2011-05-13 02:29:04
返回类型不应该是CSList,而应该是CSList<WorkoutDay>,因此请更改此类型:
[OneToMany(LocalKey = "ID", ForeignKey = "RegimenID")]
public CSList WorkoutDays
{
get { return (CSList)GetField("WorkoutDays"); }
}要这样做:
[OneToMany(LocalKey = "ID", ForeignKey = "RegimenID")]
public CSList<WorkoutDay> WorkoutDays
{
get { return (CSList<WorkoutDay>)GetField("WorkoutDays"); }
}这里的文档(一对多关系部分下的最后一段):http://viciproject.com/wiki/Projects/CoolStorage/Doc/UserGuide/Mapping
https://stackoverflow.com/questions/5980841
复制相似问题