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 个参数的构造函数,并且您没有使用SpatialDatabase 类调用任何 base(...) 构造函数,因此您的代码会隐式调用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 回答