Melhores Práticas para o Gerenciamento de Linq to SQL Dbml Arquivos?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu só comecei a usar o Linq to SQL, e eu estou querendo saber se alguém tem qualquer melhores práticas que eles podem compartilhar para o gerenciamento de dbml arquivos.

  • Como você se manter atualizado com o banco de dados?
  • Você tem um único dbml arquivo para o banco de dados inteiro, ou é dividida em várias unidades lógicas?
  • Como gerenciar este arquivo de trabalho em um ambiente de equipe?

Quaisquer outras dicas e truques de boas-vindas.

Foi útil?

Solução

Você olhou para SqlMetal?É suportado oficialmente, apesar de não ser promovido demais.Você pode usá-lo para construir dbmls a partir da linha de comando, usamos isso como parte de um banco de dados contínua integração atualizações (certifique-se de que você tem realmente uma boa separação de código se você fizer isso embora - classes parciais são salvador - como o dbml serão sobrescritos).

Se bem me lembro ele não tem as mesmas características que o modelo de designer no Visual Studio (eu acho que ele lida com pluralisation de forma diferente).Há um bom post sobre isso no Ben Hall do blog.

Outras dicas

O fato de que o L2S designer não suporta a sincronização com a estrutura de banco de dados é uma grande limitação na minha mente.No entanto, há um add-in disponível que fornece algumas re-capacidades de sincronização:

http://www.huagati.com/dbmltools/

Infelizmente, ele não é mais livre.

Já que você perguntou para outras dicas e truques para o gerenciamento de DBML...

Quando DBML arquivos são atualizados a partir do banco de dados, há certas configurações de esquema que eles não pegar, tais como valores de coluna padrão, obrigando-o a alterar manualmente a configuração.Isso pode levar à perda de horas a cada vez que você atualizar o DBML sem perceber ou lembrar-se de onde você precisará fazer ajustes manuais, e o código começa a falhar.

Para se proteger contra isso, um truque é escrever um teste de unidade que utiliza a reflexão para verificar o LINQ metadados para aqueles (manual) das configurações.Se o teste falhar, ele dá uma mensagem de erro descritiva, instruindo o usuário faça a devida alteração na coluna propriedades.Não é uma solução perfeita, e ele pode não ser conveniente se você tem muitas configurações manuais, mas pode ajudar a evitar alguns dos principais dor para si e para a sua equipa.

Aqui está um exemplo de um nunit teste para verificar se uma coluna é definida para auto-gerar a partir do DB.

    [Test]
    public void TestMetaData()
    {
        MyObj my_obj = new MyObj()
        {
            Foo = "bar",
        };

        Type type = MyObj.GetType();
        PropertyInfo prop = type.GetProperty("UpdatedOn");
        IEnumerable<ColumnAttribute> info = (IEnumerable<ColumnAttribute>)prop.GetCustomAttributes(typeof(ColumnAttribute), true);
        Assert.IsTrue(
            info.Any<ColumnAttribute>(x => x.IsDbGenerated == true), 
            "The DBML file needs to have MyObj.UpdatedOn AutoGenerated == true set. This must be done manually if the DBML for this table gets refreshed from the database."
        );
    }

PLINQO é um conjunto de código de modelos de geração de geração de LINQ to SQL.Ele suporta a sincronização com o banco de dados e a divisão de entidades em várias classes, juntamente com muitos outros recursos que fazem do LINQ to SQL fácil de usar.

Confira o PLINQO site http://www.plinqo.com bem como a introdução de vídeos.

Aqui está um link que fornece boas informações sobre o LINQ to SQL melhores práticas

http://www.a2zmenu.com/LINQ/LINQ%20to%20SQL%20Best%20Practice.aspx

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