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ファイルがデータベースオブジェクトから構築されるときに、欠落しているコンストラクターが追加されます。それが部分的なクラスである理由です!私たちは毎日何か新しいことを学びます!

[/編集]

4

2 に答える 2

2

ObjectContextには0個の引数を取るコンストラクターがなく、クラスでbase(...)コンストラクターを呼び出していないためSpatialDatabase 、コードは暗黙的base()に基本クラスのデフォルトコンストラクターを呼び出しています。

現在のコードは次のものと同等です。

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

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

}

クラスコンストラクターで次の基本コンストラクターのいずれかを呼び出す必要があります

于 2012-07-26T08:52:51.723 に答える
1

派生クラスがコンストラクターにパラメーターを提供していないことを示す警告です。パラメーターは、継承されたクラスのコンストラクターに渡すことができます。これにより、問題が発生する可能性があります。

于 2012-07-26T08:52:45.577 に答える