Subsonic 亚音速-有人能提供一个使用亚音速SimpleRepository保存对象列表/数组的示例吗?
我正在寻找可能的方法来持久化下面的类。亚音速的SimpleRepository看起来可能有用,当我问一个问题时,人们说应该有用 但我找不到一个例子来说明如何做到这一点——或者至少我能理解一个 有谁能给我举个例子,或者告诉我如何使用亚音速将以下类映射到数据库 请注意,我还没有设计数据库-我希望亚音速能为我做到这一点,尽管我是 编辑:仅扩展上一点-我希望亚音速将我的对象模型转换为关系数据库,处理所有父子关系和隐含的一对多关系。目前,我不认为亚音速可以做到这一点。但是,即使是在对象模型中显式管理外键等的工作示例(不是代码片段)也会很有用 关于我要坚持的课程的一些背景和说明:Subsonic 亚音速-有人能提供一个使用亚音速SimpleRepository保存对象列表/数组的示例吗?,subsonic,subsonic3,parent-child,one-to-many,simplerepository,Subsonic,Subsonic3,Parent Child,One To Many,Simplerepository,我正在寻找可能的方法来持久化下面的类。亚音速的SimpleRepository看起来可能有用,当我问一个问题时,人们说应该有用 但我找不到一个例子来说明如何做到这一点——或者至少我能理解一个 有谁能给我举个例子,或者告诉我如何使用亚音速将以下类映射到数据库 请注意,我还没有设计数据库-我希望亚音速能为我做到这一点,尽管我是 编辑:仅扩展上一点-我希望亚音速将我的对象模型转换为关系数据库,处理所有父子关系和隐含的一对多关系。目前,我不认为亚音速可以做到这一点。但是,即使是在对象模型中显式管理外键等
- 它们由控制某些测量设备的软件使用
- Data类包含一个名为 运行fn,可将数据保存长达 10次单独测量运行
- 请注意,RunData还包含一个数组 浮点数-RawY
- 如有必要,我们可以将数组更改为其他类型的集合(列表等)
- 在C#VS2008中为SQL Server Express开发
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方面取得了一些成功-搜索“自动映射”标签以获取我的一些经验。自动映射功能主要起作用,从对象模型创建关系数据库。非常灵活和强大。在楼下