我正在學校項目上工作,我遇到了一個讓我難堪的錯誤。我正在使用實體框架,存儲庫模式和對象數據源。當我嘗試使用產品ID外鍵插入產品變量(這是一個url參數)時,發生錯誤。通過ObjectDataSource傳遞對象Asp.net錯誤
錯誤
ObjectDataSource控件 'ProductVariantObjectDataSource' 找不到非泛型方法 'InsertProductVariantByProductId' 是一個類型爲 'FV_ProductVariant' 的參數。
鏈接圖像
http://i.stack.imgur.com/fJeR1.png
堆棧跟蹤:
[出現InvalidOperationException:ObjectDataSource控件 'ProductVariantObjectDataSource' 找不到非泛型方法 'InsertProductVariantByProductId' 這需要一個類型的參數'FV_ProductVariant'。] System.Web.UI.WebControls.ObjectDataSourceView.GetResolvedMethodData(Type type,String methodName,Type DataObjectType,Object oldDataObject,Object newDataObject,DataSourceOperation操作)+1355789 System.Web.UI.WebControls.ObjectDataSourceView.ExecuteInsert(IDictionary values)+339 System.Web.UI.DataSourceView.Insert(IDictionary values,DataSourceViewOperationCallback callback)+89 System.Web.UI.WebControls.DetailsView.HandleInsert(字符串commandArg,布爾的CausesValidation)379 System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs的,布爾的CausesValidation,字符串的ValidationGroup)574 的System.Web。 UI.WebControls.DetailsView.OnBubbleEvent(Object source,EventArgs e)+95 System.Web.UI.Control.RaiseBubbleEvent(Object source,EventArgs args)+37 System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source ,EventArgs e)+112 System.Web.UI.Control.RaiseBubbleEvent(Object source,EventArgs args)+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;
}
}
插入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;
}
}