【问题标题】:Nop Commerce - Map custom stored procedure to EntityNopcommerce - 将自定义存储过程映射到实体
【发布时间】:2014-09-08 15:39:50
【问题描述】:

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

【问题讨论】:

    标签: c# entity-framework nopcommerce


    【解决方案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' ... */
            }
        }
    }
    

    【讨论】:

    • 嗨@wooncherk,我正在尝试映射到选择的存储过程。如果我添加上面的映射,它会尝试创建一个表而不是映射一个存储过程,不是吗?
    • 映射是告诉 EF 现在将数据库表链接到代码,无论您使用 sproc(或 LINQ)来 SELECT 都需要它。 :)
    • 谢谢@wooncherk。问题是我的选择是一个自定义实体 - 没有完全映射到表模式。那么在这种情况下我将它映射到什么?感谢您迄今为止的帮助!
    • 自定义实体?因此,您没有任何要从中选择的表?这怎么可能? :)
    • 只要你有一个 DB 表(可以是你自己的,在 nopCommerce 中是非标准的),你需要一个域模型以及一个映射。然后只有 EF 可以做剩下的事情。 :)
    【解决方案2】:

    我认为您期望以下解决方案,我知道已经晚了。但我添加了这个以供将来参考。

    这仅适用于 nopCommers

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多