我可以使用实体框架的连接还是应该创建一个新连接?

发布于 2024-11-26 02:18:14 字数 505 浏览 0 评论 0原文

我有一个使用 System.Data.SQLite 访问的 SQLite 数据库。数据库被读入我的实体框架对象上下文。但是,在某些情况下我还需要直接访问数据库。

  1. 我可以/应该使用我的实体框架对象上下文正在使用的相同连接吗?即ObjectContext.Connection
  2. 如果是,我该如何访问它?将 Entities.Connection 转换为 SQLiteConnection 会导致“无法将类型为“System.Data.EntityClient.EntityConnection”的对象转换为类型为“System.Data.SQLite”。 SQLiteConnection'。"
  3. 如果没有,我应该创建一个单独的连接,打开它并在应用程序持续时间内保持打开状态,还是应该在每次我想用它访问数据库时打开并关闭连接?

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.

  1. Can I / Should I use the same connection that my Entity Framework object context is using? I.e. ObjectContext.Connection?
  2. If yes, how can I access it? Casting Entities.Connection to SQLiteConnection results in "Unable to cast object of type 'System.Data.EntityClient.EntityConnection' to type 'System.Data.SQLite.SQLiteConnection'."
  3. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

萌︼了一个春 2024-12-03 02:18:14

ObjectContext.Connection 是一个 EntityConnection。您可以通过以下方式获取存储连接:

var sc = ((EntityConnection)ObjectContext.Connection).StoreConnection;

您可以将其转换为SQLiteConnection

如果需要的话使用这个连接就可以了。

但是,正如 @Chris 提到的,您可以使用 ObjectContext.ExecuteStoreQuery 等,如果这对您有用的话。

ObjectContext.Connection is an EntityConnection. You can get the store connection via:

var sc = ((EntityConnection)ObjectContext.Connection).StoreConnection;

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.

说好的呢 2024-12-03 02:18:14

如果您使用 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.

用心笑 2024-12-03 02:18:14

Entity Framework 具有用于执行原始 SQL 查询的内置方法(如果您需要这样做)。

Entity Framework has built in methods for executing raw SQL queries if that's what you need to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文