Шаблоны фильтра.NET EntityStoreSchemaFilterEntry
Первый вопрос к SO, я надеюсь, что я делаю это правильно.;)
Относительно System.Data.Entity.Design.EntityStoreSchemaFilterEntry:
Я ищу подробную документацию по этому классу. Документы MSDN не имеют ничего, кроме указания того, какие свойства существуют и их типы данных. Я хочу создать четко определенный список фильтров для
EntityStoreSchemaGenerator.GenerateStoreMetadata(
IEnumerable<EntityStoreSchemaFilterEntry> filters
)
В частности:
- Нужно ли устанавливать все Исключения до Разрешить, чтобы разрешить только те записи, которые возвращаются?
- Каковы последствия использования нуля в любом из параметров? А как насчет пустой строки ""? Комментарии об этом кажутся противоречивыми и не соответствуют моему опыту с их использованием.
- Является ли правильный "все" подстановочный знак простым "%"?
Моя цель - исключить все таблицы, представления и фильтры, а затем разрешить только те, которые мне нужны. Если я пытаюсь сделать это, я получаю файл edmx без сущностей. Похоже, что мой вариант "Исключить все" имеет приоритет над всеми таблицами, которые я пытался включить. Если я не пытаюсь исключить ненужные мне таблицы, я получаю таблицы "Разрешено" и все остальные таблицы в базе данных, что делает фильтрацию бесполезной.
Для справки, единственная информация, которую я могу найти о правильных шаблонах шаблонов для фильтров, находится здесь: http://msdn.microsoft.com/en-us/library/ms710171(VS.85).aspx
Обратите внимание, что я вышел далеко за рамки EdmGen, отметил ошибки и ограничения в EdmGen2 и теперь пытаюсь выполнить то, что мне нужно, с помощью расширенной базы EdmGen2.
Спасибо!
Связанные ключевые слова, чтобы помочь людям, ищущим по этой теме:
AEF ADO.NET Entity Framework Таблицы Функции Представления EntityStoreSchemaFilterObjectTypes EntityStoreSchemaFilterEffect EntityStoreSchemaGenerator GenerateStoreMetadata EntityModelSchemaGenerator SSDL CSDL MSL EDMX EdmGen EdmGen2
1 ответ
Я обнаружил, что следующие фильтры были достаточны для генерации SSDL для одной таблицы.
List<EntityStoreSchemaFilterEntry> filters = new List<EntityStoreSchemaFilterEntry>();
// Just generate for the Document table.
filters.Add(new EntityStoreSchemaFilterEntry(null, "dbo", "TargetTableNameHere", EntityStoreSchemaFilterObjectTypes.Table, EntityStoreSchemaFilterEffect.Allow));
filters.Add(new EntityStoreSchemaFilterEntry(null, "dbo", "%", EntityStoreSchemaFilterObjectTypes.Function, EntityStoreSchemaFilterEffect.Exclude));
// generate the SSDL
string ssdlNamespace = modelName + "Model.Store";
EntityStoreSchemaGenerator essg = new EntityStoreSchemaGenerator(provider, connectionString, ssdlNamespace);
essg.GenerateForeignKeyProperties = includeForeignKeys;
IList<EdmSchemaError> ssdlErrors = essg.GenerateStoreMetadata(filters, version);
Мне нужно было только явно исключить функции.