我可以使用实体框架的连接还是应该创建一个新连接?
我有一个使用 System.Data.SQLite 访问的 SQLite 数据库。数据库被读入我的实体框架对象上下文。但是,在某些情况下我还需要直接访问数据库。
- 我可以/应该使用我的实体框架对象上下文正在使用的相同连接吗?即
ObjectContext.Connection
? - 如果是,我该如何访问它?将
Entities.Connection
转换为SQLiteConnection
会导致“无法将类型为“System.Data.EntityClient.EntityConnection”的对象转换为类型为“System.Data.SQLite”。 SQLiteConnection'。" - 如果没有,我应该创建一个单独的连接,打开它并在应用程序持续时间内保持打开状态,还是应该在每次我想用它访问数据库时打开并关闭连接?
I have a SQLite Database that I access using System.Data.SQLite. The database is read into my Entity Framework Objectcontext. However, I also need direct access to the database in certain cases.
- Can I / Should I use the same connection that my Entity Framework object context is using? I.e.
ObjectContext.Connection
? - If yes, how can I access it? Casting
Entities.Connection
toSQLiteConnection
results in "Unable to cast object of type 'System.Data.EntityClient.EntityConnection' to type 'System.Data.SQLite.SQLiteConnection'." - If not, should I create a seperate connection, open it and keep it open for the application duration, or should I open and close the connection every time I want to access the database with it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
ObjectContext.Connection
是一个EntityConnection
。您可以通过以下方式获取存储连接:您可以将其转换为
SQLiteConnection
。如果需要的话使用这个连接就可以了。
但是,正如 @Chris 提到的,您可以使用
ObjectContext.ExecuteStoreQuery
等,如果这对您有用的话。ObjectContext.Connection
is anEntityConnection
. You can get the store connection via:You can cast that to the
SQLiteConnection
.It's OK to use this connection if you need it.
But, as @Chris mentioned, you can just use
ObjectContext.ExecuteStoreQuery
, etc., if that will do for you.如果您使用 DBContext API,您实际上可以使用以下命令执行直接查询:aDBContext.Database.SqlQuery
如果 ObjectContext API 存在类似的东西,我不会感到惊讶,但我几乎没有使用过它,因此不能告诉你它是什么。
现在,如果由于某种原因您不能(或不想)这样做,我将为您的自定义查询创建一个新连接。将它们放入“使用”中,并在使用完毕后立即将其关闭。
If you're using the DBContext API you can actually execute a direct query by using this: aDBContext.Database.SqlQuery
I wouldn't be surprised if something similar exists for the ObjectContext API, but I barely used that one and thus can't tell you what it is.
Now if for some reason you can't (or don't want) to do that, I'd create a new connection for your custom queries. Put them in a Using and close it as soon as you're done with it.
Entity Framework
具有用于执行原始 SQL 查询的内置方法(如果您需要这样做)。Entity Framework
has built in methods for executing raw SQL queries if that's what you need to do.