У меня есть класс, отражающий мой файл dbml, который расширяет DataContext, но по какой-то странной причине он говорит мне
System.Data.Linq.DataContext" не содержит конструктора, который принимает аргументы "0"
Я следил за различными учебными пособиями по этому вопросу и не сталкивался с этой проблемой, и VS, похоже, не может ее исправить.
Вот моя реализация
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Reflection;
using System.Text;
using IntranetMvcAreas.Areas.Accounts.Models;
namespace IntranetMvcAreas
{
partial class ContractsControlDataContext : DataContext
{
[FunctionAttribute(Name="dbo.procCC_Contract_Select")]
[ResultType(typeof(Contract))]
[ResultType(typeof(ContractCostCentre))]
[ResultType(typeof(tblCC_Contract_Data_Terminal))]
[ResultType(typeof(tblCC_CDT_Data_Service))]
[ResultType(typeof(tblCC_Data_Service))]
public IMultipleResults procCC_Contract_Select(
[Parameter(Name = "ContractID", DbType = "Int")] System.Nullable<int> ContractID,
[Parameter(Name = "ResponsibilityKey", DbType = "Int")] System.Nullable<int> ResponsibilityKey,
[Parameter(Name = "ExpenseType", DbType = "Char")] System.Nullable<char> ExpenseType,
[Parameter(Name = "SupplierID", DbType = "Int")] System.Nullable<int> SupplierID)
{
IExecuteResult result = this.ExecuteMethodCall(this, (MethodInfo)(MethodInfo.GetCurrentMethod()), ContractID, ResponsibilityKey, ExpenseType, SupplierID);
return (IMultipleResults)result.ReturnValue;
}
}
}
И это ContractsControlDataContext
указано как проблема
(кстати, это не имеет отношения к совсем недавнему сообщению, которое я сделал, просто я работаю над тем же самым)
ИЗМЕНИТЬ
Это, вероятно, стоит уточнить, поэтому, пожалуйста, прочитайте очень внимательно.
Если вы не расширяете DataContext в разделяемом классе, то ExecuteMethodCall
будет недоступен.
«Intranet.ContractsControlDataContext» не содержит определения для «ExecuteMethodCall», и не удалось найти метод расширения «ExecuteMethodCall», принимающий первый аргумент типа «Intranet.ContractsControlDataContext» (вам не хватает директивы using или ссылки на сборку?)
Может быть, я пропускаю что-то невероятно глупое?
РЕШЕНО
Я думаю, возможно, Visual Studio боролась с этим, но я полностью полагался на автоматически сгенерированный код. Если щелкнуть правой кнопкой мыши представление дизайна языка моделирования базы данных и нажать «Просмотреть код», он автоматически создаст разделяемый класс для вас в определенном пространстве имен, однако это пространство имен было неправильным. Если бы кто-то мог прояснить это для меня, я был бы очень признателен.
Файл .designer.cs находится в namespace Intranet.Areas.Accounts.Models
, однако файл .cs (частичный класс, созданный для файла .designer.cs в Visual Studio) находился в namespace Intranet
. Легко определить для кого-то более опытного в этой области, чем я.
Настоящая проблема сейчас в том, чей ответ я помечаю как правильный? Потому что многие из вас внесли свой вклад в поиск этой проблемы.