我有一个使用System.Data.SQLite访问的SQLite数据库。数据库被读入我的Entity Framework Objectcontext。但是,在某些情况下我还需要直接访问数据库。
ObjectContext.Connection
?Entities.Connection
强制转换为SQLiteConnection
会导致“无法将类型为'System.Data.EntityClient.EntityConnection'的对象强制转换为'System.Data.SQLite.SQLiteConnection'。” 答案 0 :(得分:1)
ObjectContext.Connection
是EntityConnection
。您可以通过以下方式获得商店连接:
var sc = ((EntityConnection)ObjectContext.Connection).StoreConnection;
您可以将其投射到SQLiteConnection
。
如果需要,可以使用此连接。
但是,正如@Chris提到的那样,你可以使用ObjectContext.ExecuteStoreQuery
等,如果这样做的话。
答案 1 :(得分:0)
如果您正在使用DBContext API,则可以使用以下命令实际执行直接查询:aDBContext.Database.SqlQuery
如果ObjectContext API存在类似的东西,我不会感到惊讶,但我几乎没用过那个,因此无法告诉你它是什么。
现在,如果由于某种原因你不能(或不想)这样做,我会为你的自定义查询创建一个新连接。将它们放入使用中,并在完成后立即关闭它。
答案 2 :(得分:0)
Entity Framework
内置了执行原始SQL查询的方法,如果这是您需要做的事情。