4

エンティティの SQL テーブル名を取得しようとしています。MetadataWorkspace クエリを使用すると、オブジェクトまたはストレージ スペースから多くの情報を取得できます。ただし、スキーマ名とテーブル名は存在しません。

CSpace と SSpace のすべての EntityType オブジェクトを照会しようとすると、両方が正しくリストされているのを確認できますが、CSpace から SSpace を取得する方法がわかりません。

たとえば、オブジェクト モデルに User という型があるとします。データベースでスキーマ名 (tkp.User) を持つテーブル名を見つけるにはどうすればよいでしょうか。

これを行う方法はありますか?

4

1 に答える 1

7

これに対する答えはありませんperfectが、これはうまくいくはずです...

var ssSpaceSet = objectContext.MetadataWorkspace
    .GetItems<EntityContainer>(DataSpace.SSpace).First()
    .BaseEntitySets
    .First(meta => meta.ElementType.Name == "YourEntityName");

デバッガーで調べると、Tableプロパティには実際のテーブル名が含まれているはずです。

reflection最後の部分で使用する必要があります。
良いニュースは、EF6 でも透過的に動作することです (同様の基本クラスがあるため)。

( も同様でschema、そこにある必要があります。これは、spaceDb/SQL マップ名、ファセットなどの場合です。)

CreateDatabase
をサポートしていないプロバイダーを使用してプログラムでデータベースを作成するためのモデル スキーマの取得



CreateDatabase をサポートしていないプロバイダーを使用してプログラムでデータベースを作成するためのモデル スキーマを取得する
プロパティがORMモデルで計算済みとしてマークされていることを単体テストで確認するにはどうすればよいですか?
EF5 Code First でのプログラムによるデータ変換
Entity Framework MigrationSqlGenerator for SQLite
http://entityframework.codeplex.com/
Entity Framework - Get Table name from Entity
ef code first: get entity table name without dataannotations
Get Database Table Name from Entity Framework MetaData
http://www.codeproject.com/Articles/350135/Entity-Framework-Get-mapped-table-name-from-an-ent

于 2013-04-11T11:15:12.410 に答える