代码之家  ›  专栏  ›  技术社区  ›  Tom Bushell

亚音速-有人能提供一个使用亚音速单纯形存储库来持久化对象列表/数组的例子吗?

  •  0
  • Tom Bushell  · 技术社区  · 15 年前

    我正在寻找坚持以下课程的可能方法。亚音速的 简单存储库 当我问一个 more general question .

    但我一直找不到一个例子来说明如何做到这一点——或者至少有一个我能理解的例子。

    有人能给我举个例子吗,或者告诉我如何用亚音速把下面的类映射到数据库?

    注意 我没有设计数据库 - 我希望亚音速能帮我做到这一点 我是个懒汉…

    编辑: 只是为了扩展前面的观点——我希望让亚音速将我的对象模型转换为关系数据库,处理所有的父-子关系以及隐含的一对多关系。目前,我不认为亚音速能做到这一点。但即使是 工作实例 (不是代码片段)在对象模型中显式地管理外键等是有用的。

    关于我要持久化的类的一些背景和注释:

    • 它们被控制一些测量设备的软件使用。
    • 这个 数据 类包含的数组 运行数据 对象称为 林夫恩 ,最多可保存数据 10次单独测量运行
    • 注意 运行数据 还包含一个数组 浮点数- 罗伊
    • 如有必要,我们可以将数组更改为其他类型的集合(list<>等)
    • 在C,VS2008中为SQL Server Express开发

    编辑: 我用的是亚音速3.0.0.3。

    public class RunData
    
    {
        public DateTime StartDateTime { get; set; }
        public TimeSpan ElapsedTime { get; set; }
    
        private float[] _rawY;
        public float[] RawY
        {
            get
            {
                return _rawY;
            }
            set
            {
                _rawY = value;
            }
         }
     }
    
    public Data
    {
        public string OperatorId { get; set; }
        public string SampleId { get; set; }
    
        // CAN SUBSONIC DEAL WITH THIS ARRAY OF OBJECTS???
        private RunData[] _runFn;
        public RunData[] RunFn
        {
            get
            {
                return _runFn;
            }
            set
            {
                _runFn = value;
            }
        }
    }
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   Adam Cooper    15 年前

    我不确定是否会回答您在这里要求的所有问题,但如果我使用SimpleRepository实现此功能,我将拥有以下模型:

    public class RawYValue
    {
      public int Id { get; set; }
      public int RunDatumId { get; set; }
      public float YValue { get; set; }
    }
    
    public class RunDatum
    {
       var repo = new SimpleRepository();
    
       public int Id { get; set; }
       public int DataId { get; set; }
       public DateTime StartDateTime { get; set; }
       public TimeSpan ElapsedTime { get; set; }
    
       public IQueryable<RawYValue> RawYValues 
       { 
         get { return repo.Find<RawYValue>(rawYValue => rawYValue.RunDatumId == Id); }
       }
     }
    
    public Data
    {       
      var repo = new SimpleRepository();
    
      public int Id { get; set; }
      public string OperatorId { get; set; }
      public string SampleId { get; set; }
    
      // CAN SUBSONIC DEAL WITH THIS ARRAY OF OBJECTS???
      public IQueryable<RunDatum> RunData 
      { 
         get { return repo.Find<RunDatum>(runDatum => runDatum.DataId == Id); }
      }
    }
    

    我想亚音速将有困难复数的一些名称,所以你可能需要改变他们,但希望这将使你开始。

        2
  •  0
  •   Community CDub    8 年前

    回答我自己的问题…

    尽管我发现了一些其他的帖子,这意味着亚音速SimpleRepository可以从对象模型自动生成一个关系模式, 事实证明并非如此 . 参见Rob Conery对这个问题的回答:

    relationships-and-lazy-loading-in-subsonic-3-0

    不过,他正在努力,这可能是值得等待的。

    同时,我也看到了 流利的氨气 这就是我想要的开箱即用。他们的源代码下载有一个名为examples.firstproject的演示项目,它演示了我正在寻找的功能。他们的文档似乎也更加成熟。

    然而,NHibernate总体上也显得更复杂,所以看看亚音速会发展什么是有趣的。

    编辑: 这里有一个有用的链接,说明如何在SimpleRepository中管理外键。-

    subsonic-3-simplerepository

    我自己也没试过,但看起来真的能用。