我是ADO.NET的新手,我正在使用MYS与WCF。
我有一个带有ADO.NET的WCF项目,SalesSolLIB项目引用了SalesSolWCF,而SalesSolView引用了SalesSolLib项目。
问题是ADO.Net实体是在WCF中创建的,运行时,尽管名称存在于web.config文件中,但错误仍然存在。
"No connection string named 'SalesSolEntities' could be found in the application config file."
WebConfig文件
<connectionStrings>
<add name="SalesSolEntities" connectionString="metadata=res://*/SalesSolDBModel.csdl|res://*/SalesSolDBModel.ssdl|res://*/SalesSolDBModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=surpavan;persist security info=True;database=salessol;old guids=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
WCF文件中的代码:
Dim DB As New SalesSolEntities()
DB.Database.Connection.Open()
DB.Database.Connection.Close()
Return "test"
SalesSolLib中的代码:
Dim service As New SalesSolWCF.ContactService
Dim errormsg As String = service.SaveContact(wcfcontact, IsNewContact)
然而,通过浏览,我发现连接字符串必须是所有项目,但是,如果在所有项目中需要连接字符串,为什么我需要使用WCF,请建议如何解决这个问题,我不想要把连接字符串放在所有项目中还是我做错了?
我使用Entity Framework 5.0和WCF服务应用程序作为wcf项目类型。
答案 0 :(得分:1)
您正在以错误的方式调用WCF服务。您不需要通过简单地添加对DLL的引用来添加引用,您需要通过MEX公开WCF端点,然后使用“添加服务引用”添加引用。
您现在所做的是,您使用的WCF不是一项服务,而是一个简单的类,您可以关闭实例,然后调用它的方法。这不是应该如何使用WCF服务,这就是为什么你得到“连接字符串”丢失错误。您的类中的方法与数据库进行对话,因此当您在其他项目中创建该类的实例并调用该方法时,该项目还必须具有匹配的连接字符串。基本上这都是错的,不应该这样做。
WCF服务必须作为自托管在您的应用程序中或在IIS中托管。我建议你去参加一些基本的WCF教程,否则我刚写的内容对你来说没有多大意义。