Stored procedures 从NopCommerce插件创建存储过程

Stored procedures 从NopCommerce插件创建存储过程,stored-procedures,nopcommerce,Stored Procedures,Nopcommerce,我使用的是nopCommerce 3.50。我在nopCommerce中实现了插件。我已经在SQL server中创建了存储过程。现在我想通过代码从插件创建存储过程。安装插件后,它将创建存储过程 如何从nopCommerce中的插件创建存储过程?请参阅库存插件Nop.plugin.Shipping.ByWeight ObjectContext将有一个Install()方法,使用该方法创建存储过程。在卸载方法中删除它 public string CreateDatabaseScript()

我使用的是nopCommerce 3.50。我在nopCommerce中实现了插件。我已经在SQL server中创建了存储过程。现在我想通过代码从插件创建存储过程。安装插件后,它将创建存储过程


如何从nopCommerce中的插件创建存储过程?

请参阅库存插件Nop.plugin.Shipping.ByWeight

ObjectContext将有一个Install()方法,使用该方法创建存储过程。在卸载方法中删除它

    public string CreateDatabaseScript()
    {
        return ((IObjectContextAdapter)this).ObjectContext.CreateDatabaseScript();
    }

    /// <summary>
    /// Install
    /// </summary>
    public void Install()
    {
        //create the table
        var dbScript = CreateDatabaseScript();
        Database.ExecuteSqlCommand(dbScript);
        SaveChanges();
    }

    /// <summary>
    /// Uninstall
    /// </summary>
    public void Uninstall()
    {
        //drop the table
        var tableName = this.GetTableName<ShippingByWeightRecord>();
        //var tableName = "ShippingByWeight";
        this.DropPluginTable(tableName);
    }
公共字符串CreateDatabaseScript()
{
返回((IObjectContextAdapter)this.ObjectContext.CreateDatabaseScript();
}
/// 
///安装
/// 
public-void-Install()
{
//创建表
var dbScript=CreateDatabaseScript();
ExecuteSqlCommand(dbScript);
保存更改();
}
/// 
///卸载
/// 
public-void卸载()
{
//放下桌子
var tableName=this.GetTableName();
//var tableName=“按重量发货”;
此.DropPluginTable(表名);
}

请参阅
Nop.Service.CAtalog.ProductService

var products = _dbContext.ExecuteStoredProcedureList<Product>(
                    "ProductLoadAllPaged",
                    pCategoryIds,
                    pManufacturerId,
                    pStoreId,
                    pVendorId,
                    pWarehouseId,
                    pParentGroupedProductId,
                    pProductTypeId,
                    pVisibleIndividuallyOnly,
                    pProductTagId,
                    pFeaturedProducts,
                    pPriceMin,
                    pPriceMax,
                    pKeywords,
                    pSearchDescriptions,
                    pSearchSku,
                    pSearchProductTags,
                    pUseFullTextSearch,
                    pFullTextMode,
                    pFilteredSpecs,
                    pLanguageId,
                    pOrderBy,
                    pAllowedCustomerRoleIds,
                    pPageIndex,
                    pPageSize,
                    pShowHidden,
                    pLoadFilterableSpecificationAttributeOptionIds,
                    pFilterableSpecificationAttributeOptionIds,
                    pTotalRecords);
var products=\u dbContext.ExecuteStoredProcedureList(
“ProductLoadAllPaged”,
pCategoryIds,
pManufacturerId,
pStoreId,
pVendorId,
普瓦雷豪塞德,
pParentGroupedProductId,
pProductTypeId,
可单独查看,
pProductTagId,
p特色产品,
pPriceMin,
pPriceMax,
PKEYWORKS,
pSearchDescriptions,
普塞奇库,
pSearchProductTags,
puseveltextsearch,
pFullTextMode,
pFilteredSpecs,
普兰瓜吉德,
波德比,
pAllowedCustomerRoleIds,
pPageIndex,
pPageSize,
pShowHidden,
pLoadFilterableSpecificationAttributeOptionIds,
pFilterableSpecificationAttributeOptionIds,
上睑下垂记录);
它调用
productloadallpaged
存储过程。

这将起作用

public class SearchEngineData : ISearchEngineData
{
  private readonly IDbContext _dbContext;        
  public SearchEngineData(IDbContext dbContext){
     _dbContext = dbContext;
  }
  private List<ElasticStoreMapping> GetStoreMappingsForProducts(int[] productIds)
        {
            var pProductIds = _dataProvider.GetParameter();
            pProductIds.ParameterName = "ProductIds";
            pProductIds.Value = productIds == null ? string.Empty : string.Join(",", productIds);
            pProductIds.DbType = DbType.String;

            return _dbContext.SqlQuery<ElasticStoreMapping>($"Exec GetStoreMappingForElastic @ProductIds", pProductIds).ToList();
        }
}
公共类SearchEngineData:IsearchineData
{
私有只读IDbContext _dbContext;
公共搜索引擎数据(IDbContext dbContext){
_dbContext=dbContext;
}
私有列表GetStoreMappingsForProducts(int[]ProductId)
{
var pProductIds=_dataProvider.GetParameter();
pProductIds.ParameterName=“ProductIds”;
pproductId.Value=productId==null?string.Empty:string.Join(“,”,productId);
pProductIds.DbType=DbType.String;
返回_dbContext.SqlQuery($“Exec getstoremappingforelistic@ProductIds”,pProductIds).ToList();
}
}

尝试创建sql脚本文件,并在插件安装时运行它