camada de dados SubSonic que retorna POCOs em vez de objetos ActiveRecord do SubSonic
-
19-08-2019 - |
Pergunta
Eu quero usar SubSonic (2.2) em um aplicativo que estou construindo, porque eu como sua simplicidade e ele lida com qualquer tipo de consulta que pode prever a necessidade. Ao mesmo tempo, eu quero manter as camadas superiores da minha aplicação dissociados os Tipos Subsonic. Quero voltar a apenas Plain Old C # Objetos e também passar em Poços de ser salvo.
Mas aqui está o problema: Eu quero que meus POCOs ter preguiçoso carregado propriedades para coleções criança e os pais objetos com base nas relações FK. Eu acho que eu preciso para colocar alguma forma um objeto Subsonic SQLQuery em um membro privado no meu POCO e uso que internamente no getter para uma propriedade carregado preguiçoso.
Todas as idéias sobre como implementar isso especificamente com SubSonic? Alguém já fez isso antes?
Eu reconheço que a próxima versão principal do SubSonic vai fazer isso fora da caixa, mas que parece ser pelo menos alguns meses de distância.
Solução 4
Não foi possível sempre descobrir uma boa maneira de fazer isso. Subsonic 3 está olhando muito agradável e resolveria o problema, mas nesse meio tempo nós apenas foi com NHibernate .
Outras dicas
Eu uso o RepositoryRecord em SubSonic que é "principalmente" poco. Então eu faço parciais para essas classes que carregam a outra classe quando uma propriedade é selecionado.
Partial Public Class Book
Private _Author as Database.Author
Property Author() as Database.Author
Get
If _Author is nothing then
' Load the author class here.
End if
return _Author
End get
Set
....
End Set
End Property
End Class
Você pode usar o atributo:
tableBaseClass = "RepositoryRecord"
Eu tenho medo que eu não sei como este processa o carregamento preguiçoso embora. Você pode ver post de Rob Conery sobre o assunto para mais detalhes.
O que você quer não está na versão 2.x. Você pode ser capaz de obter a maior parte do caminho até lá, editando os modelos (eu tenho exemplos de propriedades lazy-carregados no meu blogue ). Outra opção é construir seus pocos em seguida, construir aulas para mapear a partir do SubSonic gerado classes e consultas para o seu modelo.