【发布时间】:2011-03-22 14:06:45
【问题描述】:
我正在做一个学校项目,我遇到了一个让我难过的错误。我正在使用实体框架、存储库模式和对象数据源。当我尝试使用产品 ID 外键(这是一个 url 参数)插入产品变体时,会发生错误。
错误
ObjectDataSource“ProductVariantObjectDataSource”找不到采用“FV_ProductVariant”类型参数的非泛型方法“InsertProductVariantByProductId”。
图片链接
http://i.stack.imgur.com/fJeR1.png
堆栈跟踪:
[InvalidOperationException:ObjectDataSource 'ProductVariantObjectDataSource' 找不到采用“FV_ProductVariant”类型参数的非泛型方法“InsertProductVariantByProductId”。] 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 值)+339 System.Web.UI.DataSourceView.Insert(IDictionary 值,DataSourceViewOperationCallback 回调)+89 System.Web.UI.WebControls.DetailsView.HandleInsert(String commandArg, Boolean CauseValidation) +379 System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean CauseValidation, String validationGroup) +574 System.Web.UI.WebControls.DetailsView.OnBubbleEvent(对象源,EventArgs e)+95 System.Web.UI.Control.RaiseBubbleEvent(对象源,EventArgs args)+37 System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(对象源,EventArgs e)+112 System.Web.UI.Control.RaiseBubbleEvent(对象源,EventArgs args)+37 System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +125 System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(字符串 eventArgument)+169 System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 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(Boolean includeStagesBeforeAsyncPoint, Boolean 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>
ObjectDataSource 插入的ProductBL
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;
}
}
【问题讨论】:
标签: asp.net entity-framework repository objectdatasource