LINQ aux données de mappage SQL sans DataContext
-
20-09-2019 - |
Question
Est-il possible d'accéder aux données de Linq mappage SQL sans une instance DataContext?
Je demande parce que je suis en train d'écrire un code de génération de données d'audit qui ne déclenchent pour certaines entités et des colonnes d'entités. Je voudrais réparer cette méta-données dans un constructeur statique avant tout accès Linq DB.
Par exemple du point de vue de la performance, il serait préférable de découvrir la clé primaire d'une entité juste une fois au lieu de déclencher le code suivant pour chaque entité a changé dans le ChangeSet:
var metaTable = context.Mapping.GetTable(entityType);
var key = (PropertyInfo)metaTable.RowType.DataMembers.Single(
md => md.IsPrimaryKey).Member;
Avant d'appeler:
key.GetValue(entity, null),
La solution
Oui, vous n'avez pas besoin d'une instance de DataContext
, seul le type.
MappingSource mappingSource = new AttributeMappingSource();
MetaModel mapping = mappingSource.GetModel(typeof(MyDataContext));
J'utilise ici AttributeMappingSource
, vous pouvez utiliser XmlMappingSource
ou d'autres implémentations de MappingSource
.