O que você escolheria para sua camada de dados hoje, LINQ ou Subsonic?
-
05-07-2019 - |
Pergunta
Estamos prontos para iniciar um novo projeto no trabalho, sem código legado. Nós usamos subsônico no passado e muito felizes com isso. Mas isso foi antes do Linq.
Alguém teve que enfrentar esse mesmo problema (Linq X Subsonic)?
Qual foi a sua decisão? Quais foram as razões?
Qualquer percepção apreciada.
Solução
Subsônico
Prós:
- Bom e simples
- Andaimes
Contras:
- As assinaturas de método geralmente aceitam os parms de string (embora você seja incentivado a usar constantes de string Dao) que podem ser abusadas.
Tenha em mente:
- Requer o projeto do site para a geração de modelos sem código e prática (precisa do BuildProvider).
Linq para SQL
Prós:
- Açúcar sintático no IDE
- Ms suportados
- Veja o SQL a ser executado no IDE
- Permite diferentes níveis de reprodução no modelo, desde a geração automática até as definições explícitas até as propriedades do objeto.
Contras:
- Complexo. Você precisa aprender novos conceitos, como o DataContext, para ser eficaz.
Tenha em mente:
- Alguns usuários do StackOverflow Pergunta Linq para o apoio contínuo do SQL.
Avalie também o Estrutura de entidade ADO.NET e aqui.
Outras dicas
A única coisa que eu amo no Linq, que não acho que as linhas subsônicas com a graça, está lidando automaticamente com junções.
FROM a in db.Orders
where a.Total > 100
SELECT new {a.Item.Desc, a.Customer.Name};
gerará automaticamente o SQL como este
select i.DESC, c.NAME
from ORDERS o
inner join ITEMS on o.ItemID = i.ItemID
inner join CUSTOMERS c on o.CustomerID = c.CUSTOMERID
where o.TOTAL > 100
E quanto a Nibernate? Está realmente fora de cena para novos projetos? Ainda assim, as pessoas vindas de Java o acharão familiar e você também pode usá -lo com .NET 2.0 e Mono.
Eu fui com o LINQ porque está embutido na estrutura. Para aqueles que dizem, não será suportado pela Microsoft ... é o Linqtosql que será eliminado. Acredito que um dos planos é absorvê -lo na estrutura da entidade.
Agora estou usando a estrutura da entidade. Ele também usa o LINQ e, basicamente, é exatamente como o Linqtosql com mais flexibilidade e energia, se você optar por usá -lo.
Costumo evitar estruturas e orms de terceiros, porque eventualmente eles também morrem. Eu acredito que eles têm mais chance de morrer porque a vida deles vem de quantas pessoas estão interessadas nela e usá -la. A vida deles também depende fortemente de seu principal autor/colaborador.
Minha experiência tem sido primária com subsônico. É muito direto para implantar e você terá seu dal em menos de meia hora. Lembre -se de que esta é uma faca suíça do exército, como é projetado para a utilidade. Basicamente, você recebe uma classe gerada por tabela, bem como a capacidade de fazer o carregamento preguiçoso para coleções. Você também pode executar procedimentos armazenados por meio da estrutura; portanto, se você tiver estruturas de dados complexas, poderá buscá -las no banco de dados e atualizar uma classe que você trabalha manualmente.
Eu o usei em 5 grandes projetos agora e estou impressionado com a rapidez com que me tornei dependente disso.
Eu estava na mesma situação. O Linq é mais "visual", você faz tudo dentro do VStudio e até Rob admite que o subsônico tem algumas coisas para combinar.
Ienumerable, LinqDatasource (com paginação automática) e a modelagem visual me convenceram a escolher o LINQ em vez de subsônico.
O maior risco com o LINQ para o SQL é que a Microsoft se cansará dele e o abandonará. Há muita especulação de que isso já aconteceu e que apenas a estrutura da entidade será atualizada. O subsônico não sofre com esse caso e pior, você tem o código -fonte para fazer suas edições.
Você pode querer examinar o que acontece quando MS para de desenvolver LINQ para sqL, como parece estar acontecendo. A versão mais recente dos Subsonics é mais fácil de criar consultas e mais legível, depois a versão anterior.