Nopcommerce - 将自定义存储过程映射到实体

时间:2014-09-08 15:39:51

标签: c# entity-framework nopcommerce

我正在使用nop commerce 3.4,(它使用EF - Code First),我想将执行select的存储过程映射到自定义实体。
我已创建要在域中映射到的自定义实体(CategoryItemModel)。 但是当NopObjectContext运行调用存储过程时,我得到错误:
实体类型CategoryItemModel不是当前上下文的模型的一部分。 如何将CategoryItemModel添加到上下文中?
提前谢谢。

2 个答案:

答案 0 :(得分:1)

你写过这个映射吗?以下是Product实体的映射示例。

using System.Data.Entity.ModelConfiguration;
using Nop.Core.Domain.Catalog;

namespace Nop.Data.Mapping.Catalog
{
    public partial class ProductMap : EntityTypeConfiguration<Product>
    {
        public ProductMap()
        {
            this.ToTable("Product");
            this.HasKey(p => p.Id);
            this.Property(p => p.Name).IsRequired().HasMaxLength(400);
            this.Property(p => p.MetaKeywords).HasMaxLength(400);

            /* ... other mappings ... */
            /* ... refer 'Product.cs' ... */
        }
    }
}

答案 1 :(得分:0)

我认为您期望的解决方案如下,我知道已经很晚了。但是我添加了此内容以供将来参考。

这仅适用于nopCommers <4.0

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();
}