Linq2SQLを使用してエンティティのコレクションをロードしようとしています。問題は、私はエンティティが何であるか知りません、IList<object>
です。私はリフレクションを使用してそれらを選択しようとしましたが、selectを実行するときにメモリ不足のエラーが発生します。コンテキストが自分の式を解析できず、DBからすべてをロードしているためです。Linq2SQL - 反射を使用して項目を選択する
誰かがこれについての助言をしている場合、または私が欲しいことを行うための代替方法があれば教えてください。
foreach (object entity in requiredEntities)
{
Type entityType = entity.GetType();
IQueryable<object> entityTable = (IQueryable<object>)dataContext.GetTable(entityType);
// grab the objects primary key field
var pkeyField = entityType.GetProperties().SingleOrDefault(p =>
p.GetCustomAttributes(typeof(System.Data.Linq.Mapping.ColumnAttribute),true)
.Cast<System.Data.Linq.Mapping.ColumnAttribute>()
.Any(attrib => attrib.IsPrimaryKey));
object pkeyValue = pkeyField.GetValue(entity,null);
Func<object,bool> primaryKeySelector = o => pkeyField.GetValue(o,null) == pkeyValue;
// crash here, out of memory exception
object result = entityTable.Where(primaryKeySelector).SingleOrDefault();
}
と
、可能な – jasper
はの 'requiredEntities'の集合である場合、私は、動的LINQを避けたいのですが単一のタイプ? –
いいえ、複数のタイプ – jasper