0

次のクラスを永続化する方法を探しています。Subsonic SimpleRepositoryは機能するように見えます。より一般的な質問をしたところ、人々は機能するはずだと言っています。

しかし、これを行う方法の例を1つも見つけることができませんでした-または少なくとも1つは理解できました。

誰か私に例を教えてもらえますか、または Subsonic を使用して次のクラスをデータベースにマップする方法を教えてもらえますか?

私はデータベースを設計していないことに注意してください-私はSubsonicが私のためにそれをしてくれることを望んでいます.私は怠け者です...

編集:前のポイントを拡張するだけです-サブソニックがオブジェクトモデルをリレーショナルDBに変換し、暗黙のすべての親子関係と1対多の関係を処理することを望んでいます。現在のところ、Subsonic でこれができるとは思えません。ただし、オブジェクト モデルで外部キーなどを明示的に管理する実際の例(コード フラグメントではない) も役立ちます。

保持したいクラスに関する背景とメモ:

  • それらは、一部の測定機器を制御するソフトウェアによって使用されます
  • Dataクラスには RunFn と呼ばれる RunData オブジェクトの配列が含まれており最大 10回の個別の測定実行のデータを保持します。
  • RunDataには float の配列も含まれていることに注意してください- 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 の回答を参照してください。

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

ただし、彼はそれに取り組んでおり、おそらく待つだけの価値があるでしょう.

それまでの間、私はFluent NHibernateを見てきましたが、これは箱から出してすぐに私が望むことを行います。彼らのソース コードのダウンロードには、私が探している機能を示す Examples.FirstProject というデモ プロジェクトがあります。彼らのドキュメンテーションも、はるかに成熟しているようです。

ただし、NHibernate は全体的により複雑に見えるため、Subsonic でどのように発展するかを見るのは興味深いでしょう。

編集: SimpleRepositoryで外部キーを自分で管理する方法を示す便利なリンクがあります-

subsonic-3-simplerepository

自分で試したことはありませんが、実際に機能するようです。

于 2009-10-27T22:42:07.200 に答える