Шаблоны фильтров .NET EntityStoreSchemaFilterEntry

Первый вопрос к SO, надеюсь, я делаю это правильно. ;)

Относительно System.Data.Entity.Design.EntityStoreSchemaFilterEntry:

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

EntityStoreSchemaGenerator.GenerateStoreMetadata(
   IEnumerable<EntityStoreSchemaFilterEntry> filters
)

Конкретно:

  • Do we need to set all Excludes before the Allows so that Allow entries are the only ones that are returned?
  • What are the consequences of using null in any of the parameters? What about empty string "" ? Comments about this seem to be conflicting and don't match my experience with their usage.
  • Is the proper "all" wildcard a simple "%"?

Моя цель — исключить все таблицы, представления и фильтры, а затем разрешить только те, которые мне нужны. Если я попытаюсь сделать это, я получу файл edmx без сущностей. Кажется, мой Excclude All имеет приоритет над всеми таблицами, которые я пытался включить. Если я не попытаюсь исключить таблицы, которые мне не нужны, я получу разрешенные мной таблицы плюс все остальные таблицы в базе данных, что делает фильтрацию бесполезной.

Для справки, единственная информация, которую я могу найти о правильных шаблонах подстановочных знаков для фильтров, находится здесь: http://msdn.microsoft.com/en-us/library/ms710171(VS.85).aspx

Обратите внимание, что я вышел далеко за пределы EdmGen, заметил ошибки и ограничения в EdmGen2, и теперь пытаюсь выполнить то, что мне нужно, с значительно расширенной базой EdmGen2.

Спасибо!

Похожие ключевые слова, чтобы помочь людям искать по этой теме:

AEF ADO.NET Entity Framework
Tables Views Functions
EntityStoreSchemaFilterObjectTypes EntityStoreSchemaFilterEffect
EntityStoreSchemaGenerator GenerateStoreMetadata
EntityModelSchemaGenerator
SSDL CSDL MSL EDMX
EdmGen EdmGen2

person TonyG    schedule 07.01.2010    source источник
comment
Вы с этим чего-нибудь добились? У меня также есть обновленная версия базы кода EdmGen2, и я ищу способы ограничить таблицы, используемые вызовом ModelGens, для GenerateStoreMetadata.   -  person Daniel Ballinger    schedule 05.09.2011


Ответы (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);

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

person Daniel Ballinger    schedule 05.09.2011
comment
Благодаря referenceSource, здесь показано одно из фильтров местоположений, используемых для построения SQL-запроса. По сути, если у вас есть разрешение на FilterObjectType, оно будет включать только те, которые явно соответствуют. Таким образом, у вас должно быть исключение для любых типов объектов, которые вы еще не отфильтровали с помощью разрешений. Надеюсь, это имеет смысл. Спасибо за этот ответ, привел меня к нужной мне информации. - person admalledd; 13.07.2016