3

SO への最初の質問です。これが正しく行われていることを願っています。;)

System.Data.Entity.Design.EntityStoreSchemaFilterEntry について:

このクラスに関する詳細なドキュメントを探しています。MSDN のドキュメントには、存在するプロパティとそのデータ型が示されているだけです。明確に定義されたフィルターのリストを作成したい

EntityStoreSchemaGenerator.GenerateStoreMetadata(
   IEnumerable<EntityStoreSchemaFilterEntry> filters
)

具体的には:

  • Allow エントリだけが返されるように、Allow の前にすべての Exclude を設定する必要がありますか?
  • いずれかのパラメーターで null を使用すると、どのような結果になりますか? 空の文字列 "" はどうですか? これに関するコメントは矛盾しているようで、私の経験とその使用法が一致していません。
  • 適切な「すべて」のワイルドカードは単純な「%」ですか?

私の目標は、すべてのテーブル、ビュー、およびフィルターを除外し、必要なものだけを許可することです。これを行おうとすると、エンティティのない edmx ファイルが得られます。私の Exclude All は、含めようとしたすべてのテーブルよりも優先されるようです。不要なテーブルを除外しようとしないと、許可したテーブルとデータベース内の他のすべてのテーブルが取得され、フィルタリングが役に立たなくなります。

参考までに、フィルターの適切なワイルドカード パターンに関する唯一の情報は、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 に答える