具有EF6的C#插件-在应用程序配置文件中找不到名为“实体”的连接字符串

时间:2018-08-16 12:37:17

标签: c# database entity-framework-6 add-in solidworks

我正在努力将VB.net Solidworks插件升级到更好的版本,但使用的是CSharp。在数据库集成方面,我正在尝试向Entity Framework 6迁移。

因此,我启动了Visual Studio 2017 SwAddin C#项目。您可以在本文here中按照我的步骤进行操作。然后,我添加了NuGet包实体框架。

enter image description here

完成此操作后,我将ADO.net实体数据模型添加到我的项目中。

enter image description here

enter image description here

enter image description here

enter image description here

然后,您可以使用类似这样的语法来插入新条目:

            Info_IndusEntities context = new Info_IndusEntities();

        WillyDemandes newDemande = new WillyDemandes()

        {

            PathModel = "ModelTest",

            ConfigName = "ConfigTest",

            Revision = 1,

            Priority = 2,

            Statut = "EnTest",

            WilmaTQ = true,

            WilmaRBRE = true,

            WilmaRBTK = true,

            WilmaTLS = true,

            GenerateBOM = true,

            PdfPage = "L;",

            ECO = "ECO #1234",

            SendingComputer = System.Environment.MachineName,

            Username = System.Environment.UserName,

            MailAddress = "myemail@mycompany.com",

            DateProduite = DateTime.Now

        };

        context.WillyDemandes.Add(newDemande);

        context.SaveChanges();

问题是,这在其他任何项目中都可以正常工作。例如,我尝试了一个C#控制台项目。但是,在Addin中尝试此操作时,出现以下错误:

“在应用程序配置文件中找不到名为“实体”的连接字符串。”

enter image description here

我尝试了许多操作,例如将App.config“构建操作”更改为“嵌入式资源”,或将“复制到输出目录”属性更改为“始终复制”,但似乎无济于事。

这是Class Librabry项目,这是解决方案的Startup项目。

内容在我的配置文件中:

enter image description here

2 个答案:

答案 0 :(得分:1)

要解决该问题

1- 将项目设置为启动项目

2- 请确保在entityFramework部分之后添加连接字符串:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>

</configSections>

<connectionStrings>
   <!-- your connection string goes here, after configSection -->
</connectionString>

答案 1 :(得分:1)

不幸的是,Solidworks加载您的插件dll的方式阻止了您(或您正在使用的库,如EF)以通常的方式访问.config文件。对您来说,最简单的解决方案是对实体对象使用重载的构造函数,并从代码中传递连接字符串。