Subsonic - alguém pode fornecer um exemplo de uso do Subsonic SimpleRepository para persistir uma lista/matriz de objetos?

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

Pergunta

Estou procurando maneiras possíveis de persistir as seguintes classes.Subsônico Repositório Simples parece que pode funcionar, e as pessoas disseram que deveria, quando perguntei a um pergunta mais geral.

Mas não consegui encontrar um único exemplo de como fazer isso - ou pelo menos um que pudesse entender.

Alguém pode me indicar um exemplo ou me dizer como eu poderia usar o Subsonic para mapear as seguintes classes para um banco de dados?

Observe que Eu não projetei o banco de dados - Espero que Subsonic faça isso por mim, preguiçoso que sou...

Editar: Apenas para expandir o ponto anterior - espero que o Subsonic converta meu modelo de objeto em um banco de dados relacional, lidando com todos os relacionamentos pai-filho e um-para-muitos implícitos.Atualmente, não acho que o Subsonic possa fazer isso.Mas mesmo um exemplo de trabalho (não um fragmento de código) que gerenciasse explicitamente chaves estrangeiras, etc. no modelo de objeto seria útil.

Alguns antecedentes e notas sobre as classes que desejo persistir:

  • eles são usados ​​pelo software que controla alguns equipamentos de medição
  • o Dados classe contém uma matriz de Executar dados objetos chamadosExecutarFn, que mantém os dados para até 10 execuções de medição individuais
  • Observe que Executar dados também contém uma variedade de carros alegóricos - CruY
  • se necessário, podemos alterar os arrays para algum outro tipo de coleção (List<>, etc)
  • desenvolvendo em C#, VS2008, para SQL Server Express

Editar: Estou usando o 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;
        }
    }
}
Foi útil?

Solução 2

Para responder à minha própria pergunta...

Apesar de algumas outras postagens que descobri que implicam que o Subsonic SimpleRepository pode gerar automaticamente um esquema relacional a partir de um modelo de objeto, Acontece que isso NÃO é o caso.Veja a resposta de Rob Conery a esta pergunta:

relacionamentos-e-carregamento-preguiçoso-em-subsônico-3-0

Ele está trabalhando nisso, entretanto, e provavelmente valerá a pena esperar.

Enquanto isso, olhei Fluente NHibernate, e isso faz o que eu quero imediatamente.O download do código-fonte tem um projeto de demonstração chamado Exemplos.FirstProject que demonstra a funcionalidade que procuro.A documentação deles também parece muito mais madura.

No entanto, o NHibernate também parece mais complexo no geral, por isso será interessante ver o que acontece com o Subsonic.

Editar: Aqui está um link útil que mostra como gerenciar você mesmo chaves estrangeiras no SimpleRepository -

repositório subsônico-3-simples

Ainda não tentei, mas parece que realmente funcionaria.

Outras dicas

Não tenho certeza se responderei tudo o que você está perguntando aqui, mas se eu estivesse implementando isso usando SimpleRepository teria os seguintes 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); }
  }
}

Imagino que o SubSonic terá problemas para pluralizar alguns dos nomes, então você pode precisar alterá-los, mas espero que isso ajude você a começar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top