orm - Windows Phone 7 上的 CoolStorage - 映射问题

标签 orm windows-phone-7 coolstorage

我在 Windows Phone 7 应用程序中使用 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);}
        }
    }
}

如果我在 Regimen 模型中注释掉 OneToMany 关系,它工作正常。我无法弄清楚我的映射有什么问题。

最佳答案

返回类型不应该是 CSList应该是 CSList<WorkoutDay>在您的 Regimen 类(class)中更改此内容:

    [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

关于orm - Windows Phone 7 上的 CoolStorage - 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980841/

相关文章:

wpf - 如何用椭圆类绘制圆扇形?

c# - 维西.CoolStorage : filter with ManyToOne and ManyToMany relation

sql - ORM 性能成本

java - Spring JPA 的 "refreshing"实体后未反射(reflect)更改

performance - 基于网络应用程序中的交易数据以可扩展的方式计算结果?

silverlight - WP7使用MouseLeftButtonDown触摸图像

silverlight - 如何以编程方式更改手机主题

Azure 存储资源管理器 - 是否可以在目录级别更改复制到 Data Lake 的文件的访问层

c# - 将 Vici Cool Storage 与 monodroid 一起使用

database - 一对多关系中的@JoinColumn 和@JoinTable 有什么区别?