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),
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top