我可以使用Entity Framework中的连接,还是应该创建一个新连接?

时间:2011-07-26 13:03:02

标签: database entity-framework sqlite database-connection system.data.sqlite

我有一个使用System.Data.SQLite访问的SQLite数据库。数据库被读入我的Entity Framework Objectcontext。但是,在某些情况下我还需要直接访问数据库。

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

3 个答案:

答案 0 :(得分:1)

ObjectContext.ConnectionEntityConnection。您可以通过以下方式获得商店连接:

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

您可以将其投射到SQLiteConnection

如果需要,可以使用此连接。

但是,正如@Chris提到的那样,你可以使用ObjectContext.ExecuteStoreQuery等,如果这样做的话。

答案 1 :(得分:0)

如果您正在使用DBContext API,则可以使用以下命令实际执行直接查询:aDBContext.Database.SqlQuery

如果ObjectContext API存在类似的东西,我不会感到惊讶,但我几乎没用过那个,因此无法告诉你它是什么。

现在,如果由于某种原因你不能(或不想)这样做,我会为你的自定义查询创建一个新连接。将它们放入使用中,并在完成后立即关闭它。

答案 2 :(得分:0)

Entity Framework内置了执行原始SQL查询的方法,如果这是您需要做的事情。