首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows phone7上的CoolStorage -映射问题

Windows phone7上的CoolStorage -映射问题
EN

Stack Overflow用户
提问于 2011-05-12 23:55:46
回答 1查看 409关注 0票数 4

我在Windows phone7应用程序中使用Vici.CoolStorage来访问SQLite数据库。我在这一行上得到了一个空引用异常:

代码语言:javascript
复制
 CSList<Regimen> regimens = Regimen.List();

我的数据库中有两个表:

代码语言:javascript
复制
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)
);

相关模型的映射为:

代码语言:javascript
复制
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关系,它工作得很好。我找不到我的映射出了什么问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-13 02:29:04

返回类型不应该是CSList,而应该是CSList<WorkoutDay>,因此请更改此类型:

代码语言:javascript
复制
    [OneToMany(LocalKey = "ID", ForeignKey = "RegimenID")]
    public CSList WorkoutDays
    {
        get { return (CSList)GetField("WorkoutDays"); }
    }

要这样做:

代码语言:javascript
复制
    [OneToMany(LocalKey = "ID", ForeignKey = "RegimenID")]
    public CSList<WorkoutDay> WorkoutDays
    {
        get { return (CSList<WorkoutDay>)GetField("WorkoutDays"); }
    }

这里的文档(一对多关系部分下的最后一段):http://viciproject.com/wiki/Projects/CoolStorage/Doc/UserGuide/Mapping

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5980841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档