當我從中獲取數據時,我的WCF數據服務工作得很好。當我嘗試插入新的數據,我得到以下異常:WCF DataService在插入時拋出ConnectionString異常
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;
而且你可以相信,在配置文件中包含的關鍵:
添加名稱= 「MyExtEntities」 的connectionString =「元數據= 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.DataService
1.HandleRequest()
我已經添加到了OnStartProcessingRequest
:
protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
if (this.CurrentDataSource == null)
this.CreateDataSource();
base.OnStartProcessingRequest(args);
}
這真是奇怪的是,取作品,它使用相同的連接... 我應該怎麼檢查?
我調試了我的上下文的部分類,每當CreateDataSource被擊中時,ConnectionString從不爲null或爲空。如果插入的唯一一個始終被初始化,那麼在插入時使用什麼上下文? – Nestor
我調試OnStartProcessingRequest並設置一個斷點與條件: args.OperationContext.RequestMethod ==「POST」 我也設置this.CreateDataSource();所以即使請求方法是POST,它也會創建DataSource。 CreateDataSource被打了幾秒鐘後,我得到了我的異常,說明ConnectionString爲null。 很明顯,使用不同的上下文來託管插入和更新方法。你能告訴我在哪裏可以設置INSERT上下文嗎? – Nestor