Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como posso garantir que o Linq to Sql não substitua ou viole os valores padrão do banco de dados não anuláveis?


As classes geradas por Linq-To-Sql não pegam as restrições de valor padrão.

Talvez no futuro, mas o problema é que as restrições nem sempre são valores simples, elas também podem ser funções escalares como GetDate() , então o linq de alguma forma teria que saber como traduzi-los. Resumindo, nem tenta. É também um tipo de coisa muito específico do banco de dados.
  • Você pode escrever um gerador de código para criar classes parciais de entidade onde você pode extrair a restrição de valor padrão.
  • Como alternativa, seu código de camada de negócios pode definir os padrões nos construtores de um arquivo xml, e tudo o que você precisa fazer é manter o arquivo xml atualizado.
  • Em vez de fazer o trabalho em construtores, você pode emular sql e adicionar valores padrão inspecionando o ChangeSet antes de enviar alterações ao banco de dados.

O problema que você está tendo é descrito em detalhes em CodeProject - Configurando valores padrão para dados vinculados LINQ