Subsonic - alguém pode fornecer um exemplo de uso do Subsonic SimpleRepository para persistir uma lista/matriz de objetos?
-
05-07-2019 - |
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;
}
}
}
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.