我继承了一些代码(发生了很多!)看起来有点像这样:(省略名称空间)
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 :(得分:2)
由于ObjectContext没有任何带0参数的构造函数,并且您没有使用SpatialDatabase
类调用任何base(...)构造函数,因此您的代码隐式调用基类的默认构造函数base()
。
您当前的代码相当于:
public partial class SpatialDatabase : global::System.Data.Objects.ObjectContext
{
SpatialDatabase() : base() //Problem is here
{
}
}
您需要使用类构造函数
调用以下基本构造函数之一答案 1 :(得分:1)
这是一个警告,说你的派生类没有提供带有参数的构造函数,你可能希望将它传递给继承的类'构造函数。这可能会导致问题。