Union с абстрактными классами
От: Danchik Украина  
Дата: 29.09.11 15:06
Оценка: 68 (1)
Привет,

Попробовал сделать Union таблицы и наткнулся на такую проблему (упрощено до репродюса)


[TableName(Name="SomeTable")]
public abstract class SomeTable
{
 // some abstract fields
}

var res = manager.GetTable<SomeTable>()
  .Union(manager.GetTable<SomeTable>())
  .ToList();


И получил

System.InvalidOperationException was unhandled
  Message=Instances of abstract classes cannot be created.
  Source=mscorlib
  StackTrace:
       at System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod(IRuntimeMethodInfo method)
       at System.Reflection.Emit.DynamicMethod.CreateDelegate(Type delegateType, Object target)
       at System.Dynamic.Utils.TypeExtensions.CreateDelegate(MethodInfo methodInfo, Type delegateType, Object target)
       at System.Linq.Expressions.Compiler.LambdaCompiler.CreateDelegate()
       at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda, DebugInfoGenerator debugInfoGenerator)
       at System.Linq.Expressions.Expression`1.Compile()
       at BLToolkit.Data.Linq.Builder.ConcatUnionBuilder.UnionContext.BuildQuery[T](Query`1 query, ParameterExpression queryParameter) in C:\!Dev.Open\BLToolkit\Source\Data\Linq\Builder\ConcatUnionBuilder.cs:line 144
       at BLToolkit.Data.Linq.Builder.ExpressionBuilder.Build[T]() in C:\!Dev.Open\BLToolkit\Source\Data\Linq\Builder\ExpressionBuilder.cs:line 164
       at BLToolkit.Data.Linq.Query`1.GetQuery(IDataContextInfo dataContextInfo, Expression expr) in C:\!Dev.Open\BLToolkit\Source\Data\Linq\Query.cs:line 130
       at BLToolkit.Data.Linq.Table`1.GetQuery(Expression expression, Boolean cache) in C:\!Dev.Open\BLToolkit\Source\Data\Linq\TableT.cs:line 106
       at BLToolkit.Data.Linq.Table`1.Execute(IDataContextInfo dataContextInfo, Expression expression) in C:\!Dev.Open\BLToolkit\Source\Data\Linq\TableT.cs:line 98
       at BLToolkit.Data.Linq.Table`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() in C:\!Dev.Open\BLToolkit\Source\Data\Linq\TableT.cs:line 191
       at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
....

Не кошерненько как то
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.