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

Database 我可以使用实体框架的连接,还是应该创建一个新的连接?,database,entity-framework,sqlite,database-connection,system.data.sqlite,Database,Entity Framework,Sqlite,Database Connection,System.data.sqlite,我有一个SQLite数据库,可以使用它进行访问。数据库被读入我的实体框架Objectcontext。但是,在某些情况下,我还需要直接访问数据库 我是否可以/应该使用实体框架对象上下文正在使用的相同连接?例如,ObjectContext.Connection 如果是,我如何访问它?将Entities.Connection强制转换为SQLiteConnection会导致“无法将类型为'System.Data.EntityClient.EntityConnection'的对象强制转换为类型为'Syst

我有一个SQLite数据库,可以使用它进行访问。数据库被读入我的实体框架Objectcontext。但是,在某些情况下,我还需要直接访问数据库

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

  • 如果您使用的是DBContext API,那么实际上可以使用以下命令执行直接查询:aDBContext.Database.SqlQuery

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


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

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

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


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

    实体框架
    内置了执行原始SQL查询的方法(如果您需要执行原始SQL查询)。

    实体框架
    内置了执行原始SQL查询的方法(如果您需要执行原始SQL查询)。

    ObjectContext.Connection
    实体连接
    。您可以通过以下方式获得门店连接:

    var sc = ((EntityConnection)ObjectContext.Connection).StoreConnection;
    
    您可以将其强制转换为
    SQLiteConnection

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


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

    ObjectContext.Connection
    是一种
    实体连接。您可以通过以下方式获得门店连接:

    var sc = ((EntityConnection)ObjectContext.Connection).StoreConnection;
    
    您可以将其强制转换为
    SQLiteConnection

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


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

    我最终使用了
    ObjectContext.ExecuteStoreQuery
    ,这非常有效。谢谢,最后我读了这个问题并使用了答案,却没有意识到原来是我发布的!克雷格,如果我能标记两次,我会的!我最终使用了
    ObjectContext.ExecuteStoreQuery
    ,这非常有效。谢谢,最后我读了这个问题并使用了答案,却没有意识到原来是我发布的!克雷格,如果我能标记两次,我会的!