Либо результат вашей хранимой процедуры должен точно соответствовать существующей таблице вашей модели LINQ, либо вы должны добавить как хранимую процедуру, так и результирующий тип элемента в файл dbml.Обычно конструктор генерирует это для вас, если вы отбрасываете свою хранимую процедуру где-либо в конструкторе (не в таблице).
Вам следует взглянуть на файл dbml, чтобы увидеть, что происходит.Например, вот часть файла dbml в моем текущем проекте:
<Function Name="uspGetDepartments">
<ElementType Name="uspGetDepartmentsResult">
<Column Name="ParentDepartmentId" Type="System.Int32" DbType="Int"
CanBeNull="true" />
<Column Name="DepartmentId" Type="System.Int32" DbType="Int" CanBeNull="true" />
<Column Name="DepartmentName" Type="System.String" DbType="NVarChar(200)"
CanBeNull="true" />
</ElementType>
</Function>
Это означает, что у меня есть хранимая процедура с именем uspGetDepartments
, которая возвращает объекты типа uspGetDepartmentsResult
.Взглянув на соответствующий файл designer.cs
, я вижу:
[global::System.Data.Linq.Mapping.FunctionAttribute()]
public ISingleResult<uspGetDepartmentsResult> uspGetDepartments()
{
IExecuteResult result = this.ExecuteMethodCall(
this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((ISingleResult<uspGetDepartmentsResult>)(result.ReturnValue));
}
и
public partial class uspGetDepartmentsResult
{
private System.Nullable<int> _ParentDepartmentId;
private System.Nullable<int> _DepartmentId;
private string _DepartmentName;
public uspGetDepartmentsResult() {}
[global::System.Data.Linq.Mapping.ColumnAttribute(
Storage="_ParentDepartmentId", DbType="Int")]
public System.Nullable<int> ParentDepartmentId
{
get { return this._ParentDepartmentId; }
set
{
if ((this._ParentDepartmentId != value))
{
this._ParentDepartmentId = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(
Storage="_DepartmentId", DbType="Int")]
public System.Nullable<int> DepartmentId
{ ... }
[global::System.Data.Linq.Mapping.ColumnAttribute(
Storage="_DepartmentName", DbType="NVarChar(200)")]
public string DepartmentName
{ ... }
}