【问题标题】:VS 2017 does not opens .edmx files in proper visual designerVS 2017 不会在适当的视觉设计器中打开 .edmx 文件
【发布时间】:2019-08-23 15:37:26
【问题描述】:

EF 数据库模型 (.edmx) 文件未在特殊的 VS EF 数据模型设计器中打开。只是标准的 XML 编辑器正在工作。这一切都发生在 VS2017 的胜利 10 (64) 中。

这是EDMX文件的声明

<Edmx Version="3.0" xmlns="http://schemas.microsoft.com/ado/2009/11/edmx"> 

这是我遇到问题的那一行

<Schema Namespace="CodeFirstDatabaseSchema" Provider="System.Data.SqlServerCe.4.0" ProviderManifestToken="4.0" Alias="Self" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl"`>

我有这个问题:

“严重代码描述项目文件行抑制状态错误175:具有不变名称'System.Data.SqlServerCe.4.0'的ADO.NET提供程序未在机器或应用程序配置文件中注册,或者无法加载. 详情见内部异常 SmartStore.Web D:\Dev\HMZ\RC5.0\builds\SmartStoreNET-3.x\src\Presentation\SmartStore.Web\App_Data\EfCache\SmartStore.Data.SmartObjectContext.edmx 5552 "

在网上找到的大多数解决方案都不起作用。

各位,请帮帮我。太可怕了,经验。我试图在 3-4 天内解决这个问题。

我尝试了大部分可以通过网络找到的答案:比如更新/重新安装 SQL Compact、编辑 web.config 提供程序工厂等等。

网页配置 (MVC 5/.NET 4.7.2)

 <DbProviderFactories>
    <remove invariant="System.Data.SqlServerCe.4.0" />
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <remove invariant="System.Data.SQLite" />
    <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.111.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
  </DbProviderFactories>
  <!-- Add the attribute 'codeConfigurationType' to the 'entityFramework' root element to overwrite the global DbConfiguration -->
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="System.Data.SqlServerCe.4.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
    </providers>
  </entityFramework>

【问题讨论】:

    标签: asp.net-mvc entity-framework web config edmx


    【解决方案1】:

    根据你上面编辑的错误:

    “System.Data.SqlServerCe.4.0”未在机器或应用程序配置文件中注册,或者无法加载。

    最好删除 System.Data.SqlServerCe 的 dll 并重新添加:

    1. 安装 Microsoft SQL Server Compact 4.0
    2. 右键单击 References 文件夹并选择 Add Reference... 选项。 前往大会 |左侧窗格中的扩展选项,然后滚动到右侧窗格中的 System.Data.SqlServerCe。 (或通过浏览按钮进入安装目录并选择dll)

    您可以尝试以下 3 种解决方案:

    1. 首先,您可以使用其中一种在线 XML 解析器(例如 https://onlinexmltools.com/validate-xml)来确保 XML 是正确的。如果存在任何错误,删除该部分将解决问题,并且模型将在 Clean and Rebuild 之后显示。
    2. 右击edmx文件->选择打开方式->选择ADO.NET实体数据模型设计器
    3. 您也可以通过删除文件并重新生成来修复它。
    4. 在 Visual Studio 安装程序上,单击修改,选择单个组件选项卡,并确保选中 SDK、库和框架下的实体框架复选框。确保重新启动 Visual Studio。

    【讨论】:

    • 我说的是第一个选项。注意,这是 .edmx 中我遇到问题的行 schemas.microsoft.com/ado/2009/11/edm/ssdl"`> 它是整个数据库实体的根?通过删除这个我删除了所有数据库的实体。有什么办法,这条线怎么处理?我可以部分评论一些东西,但把这条线留在原处吗?
    • 好的,让我检查一下。但与此同时,是否可以从解决方案资源管理器中删除 edmx 并再次通过 EF 数据实体向导添加与 dB 的连接?
    • A.纳贾尔这是不可能的。暂时,此时此刻,没有 DB。
    • 有什么方法可以检查“Microsoft SQL Server Compact 4.0”是否安装正确?
    • 请见谅,用什么方式删除.dll System.Data.SqlServerCe?通过使用VS2017引用工具还是手动将其从FS文件夹中删除?
    猜你喜欢
    • 2012-02-06
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多