3

SO的第一个问题,我希望我做对了。;)

关于 System.Data.Entity.Design.EntityStoreSchemaFilterEntry :

我正在寻找有关此类的一些详细文档。MSDN 文档只说明存在哪些属性及其数据类型。我想创建一个定义明确的过滤器列表

EntityStoreSchemaGenerator.GenerateStoreMetadata(
   IEnumerable<EntityStoreSchemaFilterEntry> filters
)

具体来说:

  • 我们是否需要在 Allows 之前设置所有 Excludes,以便 Allow 条目是唯一返回的条目?
  • 在任何参数中使用 null 会有什么后果?空字符串 "" 呢?对此的评论似乎相互矛盾,并且与我的使用经验不符。
  • 正确的“all”通配符是简单的“%”吗?

我的目标是排除所有表、视图和过滤器,然后只允许我想要的那些。如果我尝试这样做,我会得到一个没有实体的 edmx 文件。似乎我的全部排除优先于我尝试包含的所有表。如果我不尝试排除我不想要的表,我会得到我允许的表以及数据库中的所有其他表,这会使过滤变得无用。

作为参考,我能找到的关于过滤器的正确通配符模式的唯一信息是:http: //msdn.microsoft.com/en-us/library/ms710171 (VS.85).aspx

请注意,我已经超越了 EdmGen,注意到了 EdmGen2 中的错误和限制,现在我正在尝试通过一个主要扩展的 EdmGen2 基础来完成我所需要的。

谢谢!

帮助人们搜索此主题的相关关键字:

AEF ADO.NET 实体框架
表视图函数
EntityStoreSchemaFilterObjectTypes EntityStoreSchemaFilterEffect
EntityStoreSchemaGenerator GenerateStoreMetadata
EntityModelSchemaGenerator
SSDL CSDL MSL EDMX
EdmGen EdmGen2
4

1 回答 1

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);

我只需要明确排除这些功能。

于 2011-09-05T01:44:23.187 回答