Subsonic: ¿alguien puede proporcionar un ejemplo de uso de Subsonic SimpleRepository para mantener una lista / matriz de objetos?

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

Pregunta

Estoy buscando posibles formas de persistir en las siguientes clases. Parece que SimpleRepository subsónico podría funcionar, y la gente ha dicho que debería hacerlo, cuando pregunté a un pregunta más general .

Pero no he podido encontrar un solo ejemplo de cómo hacer esto, o al menos uno que pudiera entender.

¿Alguien puede señalarme un ejemplo o decirme cómo puedo usar Subsonic para asignar las siguientes clases a una base de datos?

Tenga en cuenta que no he diseñado la base de datos - Espero que Subsonic lo haga por mí , perezoso que soy ...

Editar: solo para ampliar el punto anterior: espero que Subsonic convierta mi modelo de objetos en una base de datos relacional, que trate todas las relaciones padre-hijo y uno a muchos que están implícitos Actualmente, no creo que Subsonic pueda hacer esto. Pero incluso un ejemplo de trabajo (no un fragmento de código) que gestionara explícitamente claves foráneas, etc. en el modelo de objetos sería útil.

Algunos antecedentes y notas sobre las clases que quiero persistir:

  • son utilizados por el software que controla algunos equipos de medición
  • la clase Datos contiene una matriz de objetos RunData llamados RunFn , que contiene los datos por hasta 10 corridas de medición individuales
  • tenga en cuenta que RunData también contiene una matriz de carrozas - RawY
  • si es necesario, podemos cambiar las matrices a otro tipo de colección (List < > ;, etc)
  • desarrollo en C #, VS2008, para SQL Server Express

Editar: estoy 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;
        }
    }
}
¿Fue útil?

Solución 2

Para responder mi propia pregunta ...

A pesar de algunas otras publicaciones que encontré que implican que Subsonic SimpleRepository puede generar automáticamente un esquema relacional a partir de un modelo de objetos, este NO es el caso . Vea la respuesta de Rob Conery a esta pregunta:

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

Sin embargo, está trabajando en ello, y probablemente valdrá la pena la espera.

Mientras tanto, he mirado NHibernate fluido , y esto hace lo que quiero de inmediato. Su descarga de código fuente tiene un proyecto de demostración llamado Ejemplos.PrimerProyecto que demuestra la funcionalidad que estoy buscando. Su documentación también parece ser mucho más madura.

Sin embargo, NHibernate también parece más complejo en general, por lo que será interesante ver qué se desarrolla con Subsonic.

Editar: Aquí hay un enlace útil que muestra cómo administrar claves foráneas usted mismo en SimpleRepository -

subsonic-3-simplerepository

No lo he probado yo mismo, pero parece que realmente funcionaría.

Otros consejos

No estoy seguro de que voy a responder todo lo que está preguntando aquí, pero si estuviera implementando esto usando SimpleRepository, tendría los siguientes modelos:

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

Me imagino que SubSonic tendrá problemas para pluralizar algunos de los nombres, por lo que es posible que deba cambiarlos, pero con suerte esto lo ayudará a comenzar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top