Я работаю над школьным проектом и столкнулся с ошибкой, которая поставила меня в тупик. Я использую структуру сущностей, шаблон репозитория и источник данных объекта. Я получаю сообщение об ошибке, когда пытаюсь вставить вариант продукта, используя внешний ключ идентификатора продукта (который является параметром url).
Error
ObjectDataSource «ProductVariantObjectDataSource» не удалось найти неуниверсальный метод «InsertProductVariantByProductId», который принимает параметры типа «FV_ProductVariant».
Ссылка на изображение
http://i.stack.imgur.com/fJeR1.png
Трассировка стека:
[InvalidOperationException: ObjectDataSource 'ProductVariantObjectDataSource' не удалось найти неуниверсальный метод 'InsertProductVariantByProductId', который принимает параметры типа 'FV_ProductVariant'.]
System.Web.UI.WebControls.ObjectDataSourceView.GetResolvedMethodData (Тип тип, String methodName, Тип dataObjectType, Объект oldDataObject, Объект newDataObject, Операция DataSourceOperation) +1355789
System.Web.UI.WebControls.ObjectDataSourceView.ExecuteInsert (значения IDictionary) +339
System.Web.UI.DataSourceView.Insert (значения IDictionary, обратный вызов DataSourceViewOperationCallback) +89
System.Web.UI.WebControls.DetailsView.HandleInsert (строковая командаArg, логические причиныValidation) +379
System.Web.UI.WebControls.DetailsView.HandleEvent (EventArgs e, логические причиныValidation, строка проверки группы) +574
System.Web.UI.WebControls.DetailsView.OnBubbleEvent (Источник объекта, EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent (Источник объекта, аргументы EventArgs) +37
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent (Источник объекта, EventArgs e) +112
System.Web.UI.Control.RaiseBubbleEvent (Источник объекта, аргументы EventArgs) +37
System.Web.UI.WebControls.LinkButton.OnCommand (CommandEventArgs e) +125
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent (String eventArgument) +169
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) +9
System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) +176
System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 5563
Источник данных объекта на странице aspx
<asp:ObjectDataSource ID="ProductVariantObjectDataSource" runat="server"
DataObjectTypeName="FV_ProductVariant" InsertMethod="InsertProductVariantByProductId"
SelectMethod="GetProductVariantByProductId" TypeName="ProductBL">
<InsertParameters>
<asp:Parameter Name="productVariant" Type="Object" />
<asp:QueryStringParameter Name="productId" QueryStringField="ProductId"
Type="Int32" />
</InsertParameters>
<SelectParameters>
<asp:QueryStringParameter Name="productId" QueryStringField="ProductId"
Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
ProductBL, куда ObjectDataSource вставляется с
public void InsertProductVariantByProductId(FV_ProductVariant productVariant, int productId)
{
try
{
productRepository.InsertProductVariantByProductId(productVariant, productId);
}
catch (Exception ex)
{
throw ex;
}
}
The IRepository
void InsertProductVariantByProductId(FV_ProductVariant productVariant, int ProductId);
Фактический репозиторий
public void InsertProductVariantByProductId(FV_ProductVariant productVariant, int productId)
{
try
{
productVariant.ProductVariantId = GenerateProductVariantID();
productVariant.ProductId = productId;
context.FV_ProductVariant.AddObject(productVariant);
context.SaveChanges();
}
catch (Exception ex)
{
throw ex;
}
}