为什么在 WCF 服务中抛出一个错误异常

本文关键字:一个 异常 错误 WCF 服务 为什么 | 更新日期: 2023-09-27 17:56:13

让我澄清一下我的情况。我有一个使用库的 WCF 服务,在这个库中存在数据库模型 (edmx)。

在我的 WCF 服务中:

[DataContract]
public class QuestionSetInformation
{
    [DataMember]
    public string Id { get; set; }
    [DataMember]
    public string SetName { get; set; }
    [DataMember]
    public string ObjectiveName { get; set; }
}
[ServiceContract]
public interface IService1
{
    [OperationContract]
    QuestionSetInformation[] GetQuestionSets(string objectiveName);
}
public QuestionSetInformation[] GetQuestionSets(string objectiveName)
{
    var query = from r in QuestionRepositoryManager.GetRepositories()
                select new QuestionSetInformation()
                {
                   Id = r.Id,
                   SetName = r.SetName,
                   ObjectiveName = r.ObjectiveName
                };
    return query.ToArray();
}

由于我的库使用 EDMX,因此我将连接字符串移动到我的 WCF,并且它使用 WCF 测试客户端可以完美运行。它满足了我的期望。

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="ContosoDb" connectionString="metadata=res://*/Entities.Model1.csdl|res://*/Entities.Model1.ssdl|res://*/Entities.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=X;initial catalog=contoso2_db;persist security info=True;user id=X;password=X;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

但是,在桌面应用程序中使用此 WCF 时,我遇到了以下异常:

        ServiceReference1.Service1Client service = new ServiceReference1.Service1Client("BasicHttpsBinding_IService1");
        ServiceReference1.QuestionSetInformation[] qss = service.GetQuestionSets("something");

错误异常'1 未处理 使用 T4 模板生成的代码 对于数据库优先和模型优先开发可能无法正常工作 如果在代码优先模式下使用。继续使用数据库优先或模型 首先确保指定了实体框架连接字符串 在执行应用程序的配置文件中。若要使用这些类, 从数据库优先或模型优先生成,带有代码 首先使用属性或 DbModelBuilder API,然后删除引发此代码的代码 例外。

我已经在网络上调查了这个错误,每个人都在使用连接字符串时讲述了一个问题,但我认为情况不同。我不知道如何解决它

为什么在 WCF 服务中抛出一个错误异常

这是它使用的连接字符串的问题... 它使用某种默认的 SqlClient 连接字符串(即不是指定三个 EF 元数据文件的实体框架连接字符串),使其认为你在代码优先模式下运行。

请确保连接字符串

的名称相同,或者将要使用的连接字符串名称传递到 DbContext 构造函数中。