2012-07-26 119 views
0

我繼承了一些代碼(即發生了很多!),它看起來有點像這樣:(命名空間略)「System.Data.Objects.ObjectContext」不包含一個構造函數參數0

public partial class SpatialDatabase : global::System.Data.Objects.ObjectContext 
{ 
    public string MY_PROCEDURE(Decimal arg1, Decimal arg2) 
    { 
     using (EntityConnection conn = new EntityConnection(this.Connection.ConnectionString)) 
     { 
      conn.Open(); 

      object a = new System.Data.Objects.ObjectContext(new EntityConnection()); 

      EntityCommand cmd = conn.CreateCommand(); 
      cmd.CommandText = "SpatialDatabaseContext.MY_PROCEDURE"; 
      cmd.CommandType = CommandType.StoredProcedure; 

      cmd.Parameters.AddWithValue("ARG1", arg1); 
      cmd.Parameters.AddWithValue("ARG2", arg2); 

      EntityParameter resultParam = cmd.Parameters.Add("RESULT", DbType.String, 100); 
      resultParam.Direction = ParameterDirection.Output; 

      int c = cmd.ExecuteNonQuery(); 

      return (string)resultParam.Value; 
     } 
    } 
} 

這給了我在我的班級名下帶有錯誤信息的方格藍線。

我知道這段代碼有效。這在現場其他地方運行得很好。 那麼爲什麼這個副本給我這個錯誤?

[編輯]

在現實中,什麼情況是,當EDMX文件是從數據庫對象建立丟失的構造函數中添加。這就是爲什麼它是一個分班! 我們每天都會學到新的東西!

[/編輯]

+0

您需要先閱讀本文http://stackoverflow.com/questions/140490/base-constructor-in-c-sharp-which-gets-called-first – V4Vendetta 2012-07-26 08:54:56

+0

@ V4Vendetta感謝您的鏈接 - 怎麼做它與我的情況有關? – CompanyDroneFromSector7G 2012-07-26 08:58:43

+0

它涉及到你不在繼承中正確定義構造函數。 =) – 2012-07-26 09:00:03

回答

2

由於ObjectContext不具有取0參數構造函數的任何和你沒有任何所謂的基地(...)構造與SpatialDatabase類,你的代碼是基類隱式調用默認的構造函數base()

您當前的代碼等價於:

public partial class SpatialDatabase : global::System.Data.Objects.ObjectContext 
{ 

     SpatialDatabase() : base() //Problem is here 
     { 
     } 

} 

你需要調用以下基本構造一個與你的類構造函數

+0

那麼這是否意味着它的代碼將無法修改?這來自第三方,據稱是「工作」。 – CompanyDroneFromSector7G 2012-07-26 09:01:11

+0

@bukko,可能是你缺少一個文件,它保存了剩餘的部分類SpatialDatabase,但不能確定。但在目前的狀態是,它不應該編譯 – Habib 2012-07-26 09:02:25

+0

這是合理的,謝謝! – CompanyDroneFromSector7G 2012-07-26 09:03:33

1

這是一個警告,說你的派生類中未提供與參數,你可能想傳遞給繼承類的構造函數的構造函數。這可能會導致問題。