0

我正在寻找可能的方法来坚持以下课程。亚音速SimpleRepository看起来可能会起作用,当我问一个更一般的问题时,人们已经说过它应该起作用。

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

谁能给我举个例子,或者告诉我如何使用 Subsonic 将以下类映射到数据库?

请注意,我还没有设计数据库-我希望 Subsonic 会为我做这件事,我是懒惰的草皮......

编辑:只是为了扩展前一点-我希望让 Subsonic 将我的对象模型转换为关系数据库,处理所有隐含的父子关系和一对多关系。目前,我认为 Subsonic 无法做到这一点。但即使是在对象模型中显式管理外键等的工作示例(不是代码片段)也会很有用。

关于我想坚持的课程的一些背景和注释:

  • 它们被控制某些测量设备的软件使用
  • Data类包含一个名为RunFnRunData对象 数组,它保存最多 10 次单独测量运行的数据
  • 请注意,RunData还包含一个浮点数组 - RawY
  • 如有必要,我们可以将数组更改为其他类型的集合(List<> 等)
  • 用 C# 开发,VS2008,用于 SQL Server Express

编辑:我使用的是 Subsonic 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;
        }
    }
}
4

2 回答 2

1

我不确定我是否会回答您在这里提出的所有问题,但如果我使用 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); }
  }
}

我想 SubSonic 将无法将某些名称复数化,因此您可能需要更改它们,但希望这能让您入门。

于 2009-10-25T19:20:49.990 回答
0

要回答我自己的问题...

尽管我发现其他一些帖子暗示 Subsonic SimpleRepository 可以从对象模型自动生成关系模式,但事实并非如此。请参阅 Rob Conery 对此问题的回答:

亚音速 3-0 中的关系和延迟加载

然而,他正在努力,这可能值得等待。

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

然而,NHibernate 总体上也显得更加复杂,所以看看 Subsonic 的发展将会很有趣。

编辑:这是一个有用的链接,显示如何在 SimpleRepository 中自己管理外键 -

subsonic-3-simplerepository

自己没有尝试过,但看起来它确实有效。

于 2009-10-27T22:42:07.200 回答