我正在努力将VB.net Solidworks插件升级到更好的版本,但使用的是CSharp。在数据库集成方面,我正在尝试向Entity Framework 6迁移。
因此,我启动了Visual Studio 2017 SwAddin C#项目。您可以在本文here中按照我的步骤进行操作。然后,我添加了NuGet包实体框架。
完成此操作后,我将ADO.net实体数据模型添加到我的项目中。
然后,您可以使用类似这样的语法来插入新条目:
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中尝试此操作时,出现以下错误:
“在应用程序配置文件中找不到名为“实体”的连接字符串。”
我尝试了许多操作,例如将App.config“构建操作”更改为“嵌入式资源”,或将“复制到输出目录”属性更改为“始终复制”,但似乎无济于事。
这是Class Librabry项目,这是解决方案的Startup项目。
内容在我的配置文件中:
答案 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文件。对您来说,最简单的解决方案是对实体对象使用重载的构造函数,并从代码中传递连接字符串。