Subsonic 亚音速-有人能提供一个使用亚音速SimpleRepository保存对象列表/数组的示例吗?

Subsonic 亚音速-有人能提供一个使用亚音速SimpleRepository保存对象列表/数组的示例吗?,subsonic,subsonic3,parent-child,one-to-many,simplerepository,Subsonic,Subsonic3,Parent Child,One To Many,Simplerepository,我正在寻找可能的方法来持久化下面的类。亚音速的SimpleRepository看起来可能有用,当我问一个问题时,人们说应该有用 但我找不到一个例子来说明如何做到这一点——或者至少我能理解一个 有谁能给我举个例子,或者告诉我如何使用亚音速将以下类映射到数据库 请注意,我还没有设计数据库-我希望亚音速能为我做到这一点,尽管我是 编辑:仅扩展上一点-我希望亚音速将我的对象模型转换为关系数据库,处理所有父子关系和隐含的一对多关系。目前,我不认为亚音速可以做到这一点。但是,即使是在对象模型中显式管理外键等

我正在寻找可能的方法来持久化下面的类。亚音速的SimpleRepository看起来可能有用,当我问一个问题时,人们说应该有用

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

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

请注意,我还没有设计数据库-我希望亚音速能为我做到这一点,尽管我是

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

关于我要坚持的课程的一些背景和说明:

  • 它们由控制某些测量设备的软件使用
  • Data类包含一个名为 运行fn,可将数据保存长达 10次单独测量运行
  • 请注意,RunData还包含一个数组 浮点数-RawY
  • 如有必要,我们可以将数组更改为其他类型的集合(列表等)
  • 在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;
        }
    }
}

我不确定我是否会回答您在这里提出的所有问题,但如果我使用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); }
  }
}
公共类RawYValue
{
公共int Id{get;set;}
public int RunDatumId{get;set;}
公共浮点值{get;set;}
}
公共类运行数据
{
var repo=新的SimpleRepository();
公共int Id{get;set;}
public int DataId{get;set;}
公共日期时间StartDateTime{get;set;}
公共时间跨度ElapsedTime{get;set;}
公共可查询的原始值
{ 
获取{return repo.Find(rawYValue=>rawYValue.RunDatumId==Id);}
}
}
公共数据
{       
var repo=新的SimpleRepository();
公共int Id{get;set;}
公共字符串运算符ID{get;set;}
公共字符串SampleId{get;set;}
//亚音速能处理这种物体阵列吗???
公共IQueryable运行数据
{ 
获取{return repo.Find(runDatum=>runDatum.DataId==Id);}
}
}

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

回答我自己的问题

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

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

同时,我已经研究了流利的NHibernate,这就是我想要的。他们的源代码下载有一个名为Examples.FirstProject的演示项目,它演示了我正在寻找的功能。他们的文档似乎也更加成熟

然而,NHibernate总体上看起来更为复杂,所以看看亚音速的发展情况将是有趣的

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


我自己也没有试过,但看起来它确实会起作用。

+1-谢谢亚当-正是我想要的。我将在第二天左右尝试,如果一切正常,将您的答案标记为已接受。我尝试了此操作,亚音速为数据类创建了一个表,但它忽略了RunData列表。然后,我修改了数据类,使其具有单个RunDatum属性,但这也不起作用。到目前为止唯一有效的方法是执行“repository.Add(RunDatum)”,它创建了另一个表,与第一个表没有任何关系。我希望亚音速能在整个阶级继承权中导航,并以此为基础构建数据库模式。顺便说一句,多元化似乎对我最初的名字很有效。另外,如果有区别的话,我使用的是亚音速3.0.0.3。您需要通过创建SimpleRepository实例并将SimpleRepositoryOptions.RunMigrations传递到构造函数中来告诉亚音速运行迁移。你看过文件了吗?是的,这样做。我发现了一些这样的问题(包括你的一些问题),这些问题说,自动模式生成在当前版本的亚音速下是不可能的,但Rob正在研究它,例如。其中大多数在标题中有“一对多”、“父-子”等。SubSonic将使用SimpleRepository为您生成数据库模型,但您需要迁移每个表。这个问题所说的是深层次的保存。@Adam-我认为更正确的说法是“SimpleRepository将自动为您创建和迁移各个表,但您需要自己在对象模型中管理关系”。如果我错了,请发布一个完整的工作示例,有人可以将其粘贴到Visual Studio中,并有合理的机会使其工作。@Tom-我很想知道Fluent NHibernate在这种情况下对您的工作效果如何?我正面临与SimpleRespository完全相同的问题,因此我认为它值得一看。@Alex-我在Fluent NHibernate方面取得了一些成功-搜索“自动映射”标签以获取我的一些经验。自动映射功能主要起作用,从对象模型创建关系数据库。非常灵活和强大。在楼下