Subsonic: qualcuno può fornire un esempio dell'uso di Subsonic SimpleRepository per mantenere un elenco / array di oggetti?

StackOverflow https://stackoverflow.com/questions/1610362

Domanda

Sto cercando possibili modi per persistere nelle seguenti classi. Il Sottosistema semplice subsonico sembra che funzioni, e la gente ha detto che dovrebbe, quando ho chiesto a domanda più generale .

Ma non sono stato in grado di trovare un singolo esempio di come farlo - o almeno uno che potessi capire.

Qualcuno può indicarmi un esempio o dirmi come potrei usare Subsonic per mappare le seguenti classi su un database?

Nota che non ho progettato il database - Spero che Subsonic lo faccia per me , zolla pigra che sono ...

Modifica: Giusto per espandere il punto precedente - Spero che Subsonic converta il mio modello a oggetti in un DB relazionale, gestendo tutte le relazioni Parent-Child e One-To-Many che sono implicite. Attualmente, non penso che Subsonic possa farlo. Ma anche un esempio funzionante (non un frammento di codice) che gestisse esplicitamente chiavi esterne, ecc. Nel modello a oggetti sarebbe utile.

Alcuni retroscena e note sulle lezioni che voglio persistere:

  • sono utilizzati dal software che controlla alcuni strumenti di misurazione
  • la classe Dati contiene una matrice di RunData chiamati oggetti RunFn , che contiene i dati per un massimo di 10 percorsi di misurazione individuali
  • nota che RunData contiene anche un array di float - RawY
  • se necessario, possiamo cambiare gli array in un altro tipo di raccolta (Elenco < > ;, ecc)
  • in via di sviluppo in C #, VS2008, per SQL Server Express

Modifica: sto usando 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;
        }
    }
}
È stato utile?

Soluzione 2

Per rispondere alla mia domanda ...

Nonostante alcuni altri post che ho scoperto che implicano che Subsonic SimpleRepository può generare automaticamente uno schema relazionale da un modello a oggetti, questo risulta NON essere il caso . Vedi la risposta di Rob Conery a questa domanda:

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

Ci sta lavorando, comunque, e probabilmente varrà la pena aspettare.

Nel frattempo, ho guardato Fluente NHibernate , e questo fa quello che voglio subito. Il loro download del codice sorgente ha un progetto demo chiamato Esempi.PrimoProject che dimostra la funzionalità che sto cercando. Anche la loro documentazione sembra essere molto più matura.

Tuttavia, anche NHibernate appare complessivamente più complesso, quindi sarà interessante vedere cosa si sviluppa con Subsonic.

Modifica: ecco un link utile che mostra come gestire da soli le chiavi esterne in SimpleRepository -

subsonic-3-simplerepository

Non l'ho provato da solo, ma sembra che funzionerebbe davvero.

Altri suggerimenti

Non sono sicuro che risponderò a tutto ciò che mi stai chiedendo qui, ma se lo stavo implementando usando SimpleRepository avrei i seguenti modelli:

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); }
  }
}

Immagino che SubSonic avrà problemi a pluralizzare alcuni dei nomi, quindi potrebbe essere necessario cambiarli, ma speriamo che questo ti inizi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top