Subsonic-Subsonic SimpleRepositoryを使用してオブジェクトのリスト/配列を永続化する例を誰でも提供できますか?
-
05-07-2019 - |
質問
次のクラスを永続化する方法を探しています。 Subsonic SimpleRepository は動作するように見えますが、より一般的な質問。
しかし、私はこれを行う方法の単一の例を見つけることができませんでした-または少なくとも私が理解できるもの。
誰かが例を示してくれますか、Subsonicを使用して次のクラスをデータベースにマップする方法を教えてください
私はデータベースを設計していません- Subsonicが私のためにそれを行うことを望んでいます、私は怠け者です...
編集:前のポイントを拡張するために-SubsonicでオブジェクトモデルをリレーショナルDBに変換して、すべての親子関係と1対多の関係を処理したい暗示されています。現在、Subsonicでこれができるとは思いません。ただし、オブジェクトモデルで外部キーなどを明示的に管理する動作例(コードフラグメントではない)でも有用です。
永続させたいクラスの背景と注意事項:
- これらは、いくつかの測定機器を制御するソフトウェアによって使用されます
- Data クラスには、 RunData オブジェクトの配列が含まれます。 RunFn :最大でデータを保持します 10回の個別測定実行
- RunData には配列も含まれていることに注意してください フロート-生
- 必要に応じて、配列を他のタイプのコレクション(List <!> lt; <!> gt;など)に変更できます
- SQL Server Express用のC#、VS2008での開発
編集: 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;
}
}
}
解決 2
自分の質問に答えるには...
Subsonic SimpleRepositoryがオブジェクトモデルからリレーショナルスキーマを自動的に生成できることを示唆する他の投稿にもかかわらず、これは事実ではないことが判明しました。この質問に対するRob Coneryの回答を参照してください。
relationships-and-lazy-loading-in-subsonic-3 -0
しかし、彼はそれに取り組んでおり、おそらく待つだけの価値があるでしょう。
その間、 Fluent NHibernate を見てきましたが、これは箱から出してすぐに欲しいことをします。ソースコードのダウンロードには、私が探している機能を示すExamples.FirstProjectというデモプロジェクトがあります。彼らのドキュメントもはるかに成熟しているようです。
ただし、NHibernateは全体的に複雑に見えるため、Subsonicで何が進展するかを見るのは興味深いでしょう。
編集: SimpleRepositoryで外部キーを自分で管理する方法を示す便利なリンクを次に示します-
自分で試してはいませんが、実際に機能するようです。
他のヒント
あなたがここで尋ねているすべてに答えるつもりはありませんが、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は名前の複数形の問題を抱えていると思いますので、名前を変更する必要があるかもしれませんが、うまくいけば始められるでしょう。