Данные сопоставления Linq to SQL без DataContext - PullRequest
2 голосов
/ 18 ноября 2009

Можно ли получить доступ к данным сопоставления Linq to SQL без экземпляра DataContext?

Я спрашиваю, потому что я пишу некоторый код генерации данных аудита, который будет запускаться только для некоторых сущностей и некоторых столбцов сущностей. Я хотел бы исправить эти метаданные в статическом конструкторе до любого доступа к БД Linq.

Например, с точки зрения производительности, было бы предпочтительнее обнаружить столбец первичного ключа объекта только один раз вместо запуска следующего кода для каждого измененного объекта в наборе изменений:

var metaTable = context.Mapping.GetTable(entityType);
var key = (PropertyInfo)metaTable.RowType.DataMembers.Single(
                   md => md.IsPrimaryKey).Member;

До звонка:

key.GetValue(entity, null),

1 Ответ

2 голосов
/ 18 ноября 2009

Да, вам не нужен экземпляр DataContext, только тип.

MappingSource mappingSource = new AttributeMappingSource();
MetaModel mapping = mappingSource.GetModel(typeof(MyDataContext));

Здесь я использую AttributeMappingSource, вы можете использовать XmlMappingSource или другие реализации MappingSource.

...