在添加 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>
需要一些帮助,这里发生了什么?
1- 确保所有模型都已映射并添加到 DbContext。
2-将初始值设定项添加到DBContext,并尝试调试数据库的创建。
3-检查这个问题,或者这可能会对您有所帮助。