Шаблоны фильтра.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);

Мне нужно было только явно исключить функции.

Другие вопросы по тегам