C# Nop Commerce-将自定义存储过程映射到实体
我使用的是nop commerce 3.4,它首先使用EF代码,我想将执行select的存储过程映射到自定义实体。 我已经在域中创建了要映射到的自定义实体CategoryItemModel。 但是,当NopObjectContext运行调用存储的进程时,我得到错误: 实体类型CategoryItemModel不是当前上下文的模型的一部分。 如何将CategoryItemModel添加到上下文中?C# Nop Commerce-将自定义存储过程映射到实体,c#,entity-framework,nopcommerce,C#,Entity Framework,Nopcommerce,我使用的是nop commerce 3.4,它首先使用EF代码,我想将执行select的存储过程映射到自定义实体。 我已经在域中创建了要映射到的自定义实体CategoryItemModel。 但是,当NopObjectContext运行调用存储的进程时,我得到错误: 实体类型CategoryItemModel不是当前上下文的模型的一部分。 如何将CategoryItemModel添加到上下文中? 提前谢谢。你写地图了吗?下面是一个产品实体映射的示例 using System.Data.Entit
提前谢谢。你写地图了吗?下面是一个产品实体映射的示例
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' ... */
}
}
}
我想你期待下面这样的解决方案,我知道已经很晚了。但我添加了这个供将来参考 这仅适用于小于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();
}
您好@wooncherk,我正在尝试映射到一个select存储过程。如果我添加上述映射,它将尝试创建一个表而不是映射存储过程,不是吗?映射是告诉EF立即将DB表链接到代码,无论您使用存储过程还是LINQ进行选择,您都需要它:谢谢@wooncherk。问题是我的select是一个自定义实体-没有精确映射到表架构。那么在这种情况下我应该把它映射到什么呢?谢谢你迄今为止的帮助!自定义实体?所以您没有任何要从中选择的表?这怎么可能呢只要你有一个DB表,它可以是你自己的,在nopCommerce中是非标准的,你就需要有一个域模型和一个映射。那么只有EF可以完成剩下的工作: