【发布时间】:2016-02-01 00:05:17
【问题描述】:
我遵循了关于 Entity Framework 7 的 Getting Started on ASP.NET 5 指南,并将 MicrosoftSqlServer 替换为 Sqlite,代码的唯一区别在于 Startup.cs:
services.AddEntityFramework()
.AddSqlite()
.AddDbContext<BloggingContext>(options => options.UseSqlite("Filename=db.db"));
当我运行网站并导航到 /Blogs 时,我收到一个错误:
Microsoft.Data.Sqlite.SqliteException 未被用户代码处理
错误代码=-2147467259 HResult=-2147467259 消息=SQLite 错误 1: '没有这样的表:博客' 来源=Microsoft.Data.Sqlite
SqliteErrorCode=1 堆栈跟踪: 在 Microsoft.Data.Sqlite.Interop.MarshalEx.ThrowExceptionForRC(Int32 rc, Sqlite3Handle 数据库) 在 Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior 行为) 在 Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReader(CommandBehavior 行为) 在 System.Data.Common.DbCommand.ExecuteReader() 在 Microsoft.Data.Entity.Query.Internal.QueryingEnumerable.Enumerator.MoveNext() 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 System.Linq.Enumerable.d__1`2.MoveNext() 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 Microsoft.Data.Entity.Query.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext() 在 System.Collections.Generic.List`1..ctor(IEnumerable`1 集合) 在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 源) 在 d:\arthur\documents\visual studio 中的 EFGetStarted.AspNet5.Controllers.BlogsController.Index() 2015\Projects\EFGetStarted.AspNet5\src\EFGetStarted.AspNet5\Controllers\BlogsController.cs:regel 18 内部异常:
我理解这好像没有名为“Blog”的表,但是当我在 DB Browser for SQLite 中打开 .db 文件时,实际上有一个名为“Blog”的表:
SQLite 是否需要对代码进行其他更改,或者这是实体框架的 SQLite 连接器中的错误?
【问题讨论】:
-
你的
BlogsController.Index方法是什么样的? -
你连接到正确的数据库了吗?
-
@DavidG
public IActionResult Index() { return View(_context.Blogs.ToList()); } -
@DevilSuichiro 这不是 EF 处理的吗?整个程序中只有一个地方提供了有关数据库位置的信息。 EF 使用该信息来创建数据库,它也应该用于连接它,不是吗?
-
很可能是的。你用 db 浏览器连接到同一个吗?
标签: asp.net entity-framework sqlite asp.net-core entity-framework-core