【问题标题】:Map custom property coming from a stored procedure function into Entity Framework将来自存储过程函数的自定义属性映射到实体框架
【发布时间】:2011-11-10 04:55:49
【问题描述】:

我正在使用 nop commerce 电子商务开源 1.9,其中他们使用实体框架。

他们有一个存储过程来加载所有产品并将该存储过程映射到sp_ProductLoadAllPaged函数

现在我更改了该存储过程,并在该 sp 中输出了另外一列 languages

我还在 product.cs 类文件中声明了languages 属性。

但现在我使用快速观看 languages 列对于所有产品都是空的。

我在模型浏览器的数据库中更新了.edmx 文件。

现在我检查我是否缺少类和存储过程中的语言属性的一些映射

所以请告诉我如何将这个新的存储过程列映射到产品类语言属性。

更多信息请看下图

您可以检查存储过程的最终选择语句,我在其中进行了更改以获取该产品的语言

SELECT  
        p.ProductId,
        p.Name,
        p.ShortDescription,
        p.FullDescription,
        p.AdminComment,
        p.TemplateId,
        p.ShowOnHomePage,
        p.MetaKeywords,
        p.MetaDescription,
        p.MetaTitle,
        p.SEName,
        p.AllowCustomerReviews,
        p.AllowCustomerRatings,
        p.RatingSum,
        p.TotalRatingVotes,
        p.Published,
        p.Deleted,
        p.CreatedOn,
        p.UpdatedOn,
        p.AmazonLink,
        p.ProductCode,
        p.CategoryText,
        STUFF((Select ','+ [Name] from Nop_Language where Nop_Language.LanguageId in
    (Select Nop_ProductLocalized.LanguageID
    from
        Nop_ProductLocalized
    where
        ProductID=p.ProductId
    ) for xml path('')),1,1,'') as 'languages'
    FROM
        #PageIndex [pi]
        INNER JOIN Nop_Product p with (NOLOCK) on p.ProductID = [pi].ProductID
    WHERE
        [pi].IndexID > @PageLowerBound AND 
        [pi].IndexID < @PageUpperBound
    ORDER BY
        IndexID

【问题讨论】:

    标签: entity-framework stored-procedures nopcommerce


    【解决方案1】:

    只修改类是不够的。新属性必须在 EDMX 中已知,并且来自 EDMX 的模板必须在类中为您生成该属性。

    因此,如果sp_ProductLoadAllPaged 是一个实体,您必须在 EDMX 中手动添加属性并对其进行映射。如果它是复杂类型,您必须在函数导入向导中更新复杂类型。如果您将其作为 XML 打开(在进行手动更改之前将当前版本保存在某处),您也可以直接在 EDMX 中执行这两种方法。

    【讨论】:

    • 如果我通过右键单击选择编辑来编辑函数,则复杂类型被禁用。
    • 在这种情况下存储过程不能返回复杂类型,您必须编辑实体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    相关资源
    最近更新 更多