Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载相关对象时发生异常。实体框架_C#_Entity Framework_Exception - Fatal编程技术网

C# 加载相关对象时发生异常。实体框架

C# 加载相关对象时发生异常。实体框架,c#,entity-framework,exception,C#,Entity Framework,Exception,在数据库中加载相关对象时出现异常。我正在加载我所有的MatchData对象,我想用foreach迭代它们 我正在加载的对象是: 匹配数据类: public class MatchData { [Key] public virtual int Id { get; set; } private List<PlayerData> blueTeam = new List<PlayerData>(); private List<PlayerDa

在数据库中加载相关对象时出现异常。我正在加载我所有的
MatchData
对象,我想用foreach迭代它们

我正在加载的对象是:

匹配数据类:

public class MatchData
{
    [Key]
    public virtual int Id { get; set; }
    private List<PlayerData> blueTeam = new List<PlayerData>();
    private List<PlayerData> redTeam = new List<PlayerData>();

    [InverseProperty("MatchDataBlue")]
    public virtual List<PlayerData> BlueTeam
    {
        get { return blueTeam; }
        set { blueTeam = value; }
    }
    [InverseProperty("MatchDataRed")]
    public virtual List<PlayerData> RedTeam
    {
        get { return redTeam; }
        set { redTeam = value; }
    }
}
public class PlayerData
{

    // properties
    [Key]
    public virtual int Id { get; set; }

    public virtual Player Player { get; set; }
    public virtual MatchData MatchDataBlue { get; set; }
    public virtual MatchData MatchDataRed { get; set; }
}
下面是我如何加载MatchData对象的方法:

using (DBBooneContext db = new DBBooneContext())
{
    var smth = db.MatchData
        .Include(md => md.BlueTeam)
        .ToList();
}
DBContext

class DBBooneContext : DbContext
{
    public DbSet<Player> Player { get; set; }
    public DbSet<PlayerData> PlayerData { get; set; }
    public DbSet<MatchData> MatchData { get; set; }
}
classdbboonecontext:DbContext
{
公共DbSet播放器{get;set;}
公共DbSet PlayerData{get;set;}
公共数据库集匹配数据{get;set;}
}
当我运行ToList时,我得到一个异常: EntityFramework.SqlServer.dll中发生类型为“System.Reflection.TargetInvocationException”的未处理异常

完全例外:

A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in EntityFramework.SqlServer.dll
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: The class 'Boonekamp.ClassCollection.PlayerData' has no parameterless constructor.
   at System.Data.Entity.Core.Objects.DelegateFactory.GetConstructorForType(Type type)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Emit_ConstructEntity(EntityType oSpaceType, IEnumerable`1 propertyBindings, Expression entityKeyReader, Expression entitySetReader, TranslatorArg arg, EntityProxyTypeInfo proxyTypeInfo)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visit(EntityColumnMap columnMap, TranslatorArg arg)
   at System.Data.Entity.Core.Query.InternalTrees.EntityColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2 visitor, TArgType arg)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.HandleSpandexRecord(RecordColumnMap columnMap, TranslatorArg arg, RowType spanRowType)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visit(RecordColumnMap columnMap, TranslatorArg arg)
   at System.Data.Entity.Core.Query.InternalTrees.RecordColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2 visitor, TArgType arg)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.ProcessCollectionColumnMap(CollectionColumnMap columnMap, TranslatorArg arg, ColumnMap discriminatorColumnMap, Object discriminatorValue)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visit(DiscriminatedCollectionColumnMap columnMap, TranslatorArg arg)
   at System.Data.Entity.Core.Query.InternalTrees.DiscriminatedCollectionColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2 visitor, TArgType arg)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.AcceptWithMappedType(TranslatorVisitor translatorVisitor, ColumnMap columnMap)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.HandleSpandexRecord(RecordColumnMap columnMap, TranslatorArg arg, RowType spanRowType)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visit(RecordColumnMap columnMap, TranslatorArg arg)
   at System.Data.Entity.Core.Query.InternalTrees.RecordColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2 visitor, TArgType arg)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.ProcessCollectionColumnMap(CollectionColumnMap columnMap, TranslatorArg arg, ColumnMap discriminatorColumnMap, Object discriminatorValue)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.ProcessCollectionColumnMap(CollectionColumnMap columnMap, TranslatorArg arg)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visit(SimpleCollectionColumnMap columnMap, TranslatorArg arg)
   at System.Data.Entity.Core.Query.InternalTrees.SimpleCollectionColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2 visitor, TArgType arg)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslateColumnMap[T](ColumnMap columnMap, MetadataWorkspace workspace, SpanIndex spanIndex, MergeOption mergeOption, Boolean streaming, Boolean valueLayer)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslateColumnMap(Translator translator, Type elementType, ColumnMap columnMap, MetadataWorkspace workspace, SpanIndex spanIndex, MergeOption mergeOption, Boolean streaming, Boolean valueLayer)
   at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory.Prepare(ObjectContext context, DbQueryCommandTree tree, Type elementType, MergeOption mergeOption, Boolean streaming, Span span, IEnumerable`1 compiledQueryParameters, AliasGenerator aliasGenerator)
   at System.Data.Entity.Core.Objects.EntitySqlQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__6()
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Boonekamp.ClassCollection.Player.getStats(Predicate`1 predicate) in d:\Dropbox\code\c#\Boonekamp\Boonekamp\ClassCollection\Player.cs:line 49

Additional information: Exception has been thrown by the target of an invocation.
EntityFramework.SqlServer.dll中发生了类型为“System.Reflection.TargetInvocationException”的首次意外异常
System.Reflection.TargetInvocationException:调用的目标已引发异常。-->System.InvalidOperationException:类“Boonekamp.ClassCollection.PlayerData”没有无参数构造函数。
位于System.Data.Entity.Core.Objects.DelegateFactory.GetConstructorForType(类型)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Emit_ConstructEntity(EntityType-oSpaceType,IEnumerable`1 propertyBindings,Expression entityKeyReader,Expression entitySetReader,TranslatorArg,EntityProxyTypeInfo)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visite(EntityColumnMap columnMap,TranslatorArg arg)
在System.Data.Entity.Core.Query.InternalTrees.EntityColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2访问者,TArgType arg)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.HandleSpandexRecord(RecordColumnMap columnMap,TranslatorArg arg,RowType spanRowType)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visite(RecordColumnMap columnMap,TranslatorArg arg)
位于System.Data.Entity.Core.Query.InternalTrees.RecordColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2访问者,TArgType参数)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.ProcessCollectionColumnMap(CollectionColumnMap columnMap、TranslatorArg arg、columnMap discriminatorColumnMap、Object discriminatorValue)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visite(DiscriminatedCollectionColumnMap columnMap,TranslatorArg arg)
位于System.Data.Entity.Core.Query.InternalTrees.DiscriminatedCollectionColumnMap.Accept[TResultType,TargetType](ColumnMapVisitorWithResults`2访问者,TargetType参数)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.AcceptWithMappedType(TranslatorVisitor TranslatorVisitor,ColumnMap ColumnMap)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.HandleSpandexRecord(RecordColumnMap columnMap,TranslatorArg arg,RowType spanRowType)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visite(RecordColumnMap columnMap,TranslatorArg arg)
位于System.Data.Entity.Core.Query.InternalTrees.RecordColumnMap.Accept[TResultType,TArgType](ColumnMapVisitorWithResults`2访问者,TArgType参数)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.ProcessCollectionColumnMap(CollectionColumnMap columnMap、TranslatorArg arg、columnMap discriminatorColumnMap、Object discriminatorValue)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.ProcessCollectionColumnMap(CollectionColumnMap columnMap,TranslatorArg arg)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslatorVisitor.Visite(SimpleCollectionColumnMap columnMap,TranslatorArg arg)
在System.Data.Entity.Core.Query.InternalTrees.SimpleCollectionColumnMap.Accept[TResultType,TargetType](ColumnMapVisitorWithResults`2访问者,TargetType arg)
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslateColumnMap[T](ColumnMap ColumnMap,MetadataWorkspace工作区,SpanIndex SpanIndex,MergeOption MergeOption,Boolean streaming,Boolean valueLayer)
---内部异常堆栈跟踪的结束---
位于System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数)
位于System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(对象obj,对象[]参数,对象[]参数)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性)
在System.Reflection.MethodBase.Invoke(对象obj,对象[]参数)处
位于System.Data.Entity.Core.Common.Internal.Materialization.Translator.TranslateColumnMap(Translator-Translator,Type elementType,ColumnMap ColumnMap,MetadataWorkspace,SpanIndex SpanIndex,MergeOption MergeOption,Boolean streaming,Boolean valueLayer)
在System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory.Prepare(ObjectContext上下文、DbQueryCommandTree树、类型elementType、MergeOption MergeOption、布尔流、跨度、IEnumerable`1 compiledQueryParameters、别名生成器AliasGenerator)
位于System.Data.Entity.Core.Objects.EntitySqlQueryState.GetExecutionPlan(可为null的`1 forMergeOption)
在System.Data.Entity.Core.Objects.ObjectQuery`1.c_u DisplayClass7.b__u6()
在System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 Func,IDBEcutionStrategy executionStrategy,Boolean startLocalTransaction,Boolean releaseConnectionOnSuccess)
在System.Data.Entity.Core.Objects.ObjectQuery`1.c__DisplayClass7.b__5()中
在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1操作)中
位于System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(可空`1
[Obsolete("Only needed for serialization and materialization", true)]
public PlayerData() {}

public PlayerData(Player player)
{
}