【发布时间】:2013-07-17 13:04:33
【问题描述】:
当我从中获取数据时,我的 WCF 数据服务运行良好。当我尝试插入新数据时,出现以下异常:
ConnectionString 属性尚未初始化
我唯一修改的是使用告诉使用连接字符串名称的部分类:
public MyExtEntities(string connectionString) : base(connectionString) { ... } : base(connectionString) { ... }
我覆盖了CreateDataSource,所以总是有正确的上下文:
protected override MyExtEntities CreateDataSource()
{
MyExtEntities entities = null;
try
{
entities = new MyExtEntities ("name=MyExtEntities");
...
return entities;
您可以相信,配置文件包含该密钥:
添加 name="MyExtEntities" connectionString="metadata=res://*...
堆栈显示核心系统正在运行,我的方法没有:
System.Data.EntityClient.EntityConnection.Open()
在: System.Data.Objects.ObjectContext.EnsureConnection()
在: System.Data.Objects.ObjectContext.SaveChanges(SaveOptions 选项)
在:System.Data.Entity.Internal.InternalContext.SaveChanges()
在: System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
在: System.Data.Entity.DbContext.SaveChanges()
在: lambda_method(闭包,对象)
在: System.Data.Services.Providers.DbContextHelper.c_DisplayClass4.b_0()
在: System.Data.Services.Providers.ObjectContextServiceProvider.SaveContextChanges()
在: System.Data.Services.Providers.ObjectContextServiceProvider.SaveChanges()
在: System.Data.Services.Providers.EntityFrameworkDataServiceProvider.SaveChanges()
在: System.Data.Services.DataService1.HandleNonBatchRequest(RequestDescription description) <br> at: System.Data.Services.DataService1.HandleRequest()
我已经将此添加到OnStartProcessingRequest:
protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
if (this.CurrentDataSource == null)
this.CreateDataSource();
base.OnStartProcessingRequest(args);
}
提取工作并且使用相同的连接真的很奇怪...... 我应该检查什么?
【问题讨论】:
-
我调试了我的 Context 的部分类,每当点击 CreateDataSource 时,ConnectionString 永远不会为空或为空。如果我覆盖的唯一一个始终被初始化,那么插入时使用什么上下文?
-
我调试了 OnStartProcessingRequest 并使用条件设置了一个断点:args.OperationContext.RequestMethod=="POST" 我也设置了 this.CreateDataSource();因此即使请求方法是 POST,它也会创建 DataSource。 CreateDataSource 被击中,几秒钟后我收到异常,指出 ConnectionString 为空。很明显,不同的上下文用于承载插入和更新方法。你能告诉我在哪里可以设置 INSERT 上下文吗?
标签: c# connection-string wcf-data-services