【问题标题】:how to open EntityConnection without connection string如何在没有连接字符串的情况下打开 EntityConnection
【发布时间】:2020-01-02 09:43:01
【问题描述】:

我需要在没有连接字符串的情况下打开实体框架的连接。

由于我们使用的是安全层,我们不允许使用连接字符串连接到 SQL Server,因此我们有一个 DLL,它返回一个打开的 SqlConnection

  • EF 版本:6.2.0

错误:

MetadataWorkspace 必须预先注册 EdmItemCollection。

我尝试将entityConnection 指定为SqlConnection,但出现错误。

示例代码:

Public Shared Function getEntityConnection() As EntityConnection
      Dim workspace As New MetadataWorkspace()
      Return New EntityClient.EntityConnection(workspace, AppCommon.AppFunctions.AppGetSQLCon(True))
End Function

AppCommon.AppFunctions.AppGetSQLCon(True) 是返回SqlConnection 实例的函数。

但它不起作用,有人有解决这个问题的方法吗?

【问题讨论】:

  • 请提供:EF 版本,哪个异常,并指出在哪一行代码抛出异常。
  • 更新了问题,抱歉
  • 由于这都是您自己的自定义代码,没有任何标准,因此很难真正为您提供任何帮助.....
  • 我只是在寻找在没有连接字符串的情况下打开 EF 连接的解决方案。
  • 你读过this question吗?我希望如此,因为这是我在网上搜索您的错误消息时的第二个结果。

标签: sql-server vb.net entity-framework


【解决方案1】:

终于找到了不用连接字符串连接实体框架的解决方案,所以你需要的是:

  1. 更改实体 `DbContext' 的构造函数以从如下函数接收连接:
    Public Sub New()
        MyBase.New(getEntityConnection(), False)
    End Sub
  1. 然后在该函数内部从一个打开的 sqlconnection 对象返回一个实体连接对象,如下所示:
Public Shared Function getEntityConnection() As EntityConnection
    Dim workspace As New MetadataWorkspace(New String() {"res://*/"}, New Assembly() {Assembly.GetExecutingAssembly()})
    Return New EntityClient.EntityConnection(workspace, getSqlConnectionObject())        
End Function

现在您的实体框架已连接到数据库而无需连接字符串

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 2011-05-18
    • 1970-01-01
    • 2020-09-13
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多