Depuis que vous avez demandé pour d'autres conseils et astuces pour la gestion des DBML...
Lorsque DBML fichiers sont actualisées à partir de la base de données, il y a certains paramètres de schéma qui ils ne ramassent pas, tels que par défaut les valeurs de colonne, vous forçant à changer manuellement le réglage. Cela peut conduire à des heures perdues à chaque fois que vous actualisez la DBML sans s'en rendre compte ou de se souvenir où vous avez besoin de faire des ajustements manuels, et votre code commence à tomber en panne.
Pour se prémunir contre cela, une astuce consiste à écrire un test unitaire qui utilise la réflexion pour vérifier le LINQ métadonnées pour ceux (manuel) des paramètres. Si le test échoue, il donne un message d'erreur descriptif, demandant à l'utilisateur de faire le bon changement pour les propriétés de la colonne. Ce n'est pas une solution parfaite, et il pourrait ne pas être pratique si vous avez de nombreux réglages manuels, mais il peut aider à éviter certains des principaux douleur pour vous-même et votre équipe.
Voici un exemple de test nunit pour vérifier qu'une colonne est définie sur auto-générer à partir de la 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."
);
}