Types
のリストをObjectContext
からどのように抽出できますか?EntityFramework ObjectContextから型のコレクションを取得
たとえば、「Bank」という名前のエンティティと「Company」という名前のエンティティを含むオブジェクトコンテキストがあります。 私はそれらのEntityObject型を取得したいと思います。
どうすればいいですか?
Types
のリストをObjectContext
からどのように抽出できますか?EntityFramework ObjectContextから型のコレクションを取得
たとえば、「Bank」という名前のエンティティと「Company」という名前のエンティティを含むオブジェクトコンテキストがあります。 私はそれらのEntityObject型を取得したいと思います。
どうすればいいですか?
EntityObject
クラスのリストを取得するために、実行時に生成されたObjectContext
クラスをクエリしたいとします。その後、反射でエクササイズになり:
PropertyInfo[] propertyInfos = objectContext.GetType().GetProperties();
IEnumerable<Type> entityObjectTypes =
from propertyInfo in propertyInfos
let propertyType = propertyInfo.PropertyType
where propertyType.IsGenericType
&& propertyType.Namespace == "System.Data.Objects"
&& propertyType.Name == "ObjectQuery`1"
&& propertyType.GetGenericArguments()[0].IsSubclassOf(typeof(EntityObject))
select propertyType.GetGenericArguments()[0];
このコードはT
がEntityObject
のサブクラスですSystem.Data.Objects.ObjectQuery<T>
を入力したオブジェクトコンテキスト上のすべてのパブリックプロパティを見つけます。
この行を削除する場合にのみ、あなたが動的データを使用している場合、これは容易になり、私はちょうど、EF4.0で我々のアプリ
MetaModel.GetModel(objectContext.GetType()).Tables.Select(t => t.EntityType);
の一つにこれをしなかったが:&& propertyType.Name ==「ObjectQuery' 1 "の場合、結果はOK、そうでない場合は何も返しません。あなたは説明できますか? –
コンテキストにDbSetプロパティを持たない型をコンテキストに含めることはできますか? – MBoros