在添加 Web API 控制器时创建模型时,无法使用上下文

本文关键字:上下文 创建 Web 添加 API 控制器 模型 | 更新日期: 2023-09-27 18:33:38

这是我的模型

public class Game
{
     [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    public string  GameName { get; set; }
    public virtual ICollection<GameImages> GameImage { get; set; }

}
 public class GameImages
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    [DataType(DataType.ImageUrl)]
    public string GameImageUrl { get; set; }
    public int Game_Id { get; set; }
    [ForeignKey("Game_Id")]
    public virtual Game games { get; set; }
}
 public class GameDbContext:DbContext
    {
        public GameDbContext():base("name=DefaultConnection") { }
        public DbSet<Game> Games { get; set; }
        public DbSet<GameImages> Images { get; set; }
    }

我有两个控制器,使用实体框架具有读/写操作。我使用 EF 添加另一个具有读/写操作的 Web API 控制器。尝试访问 GET api 时,出现以下错误

<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The context cannot be used while the model is being created.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace>
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet`1.ToString() at System.Data.Entity.Infrastructure.DbQuery`1.ToString() at System.Convert.ToString(Object value, IFormatProvider provider) at System.Web.Http.Tracing.FormattingUtilities.ValueToString(Object value, CultureInfo cultureInfo) at System.Web.Http.Tracing.Tracers.HttpActionDescriptorTracer.<ExecuteAsync>b__2(TraceRecord tr, Object value) at System.Web.Http.Tracing.ITraceWriterExtensions.<>c__DisplayClass1b`1.<>c__DisplayClass1f.<TraceBeginEndAsync>b__13(TraceRecord traceRecord) at System.Web.Http.Tracing.SystemDiagnosticsTraceWriter.Trace(HttpRequestMessage request, String category, TraceLevel level, Action`1 traceAction) at System.Web.Http.Tracing.ITraceWriterExtensions.<>c__DisplayClass1b`1.<TraceBeginEndAsync>b__12(TResult result) at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass3b`2.<Then>b__3a(Task`1 t) at System.Threading.Tasks.TaskHelpersExtensions.ThenImpl[TTask,TOuterResult](TTask task, Func`2 continuation, CancellationToken cancellationToken, Boolean runSynchronously)
</StackTrace>
</Error>

需要一些帮助,这里发生了什么?

在添加 Web API 控制器时创建模型时,无法使用上下文

1- 确保所有模型都已映射并添加到 DbContext。

2-将初始值设定项添加到DBContext,并尝试调试数据库的创建。

3-检查这个问题,或者这可能会对您有所帮助。