小编Sho*_*ave的帖子

从Entity框架返回自定义对象<List T>并分配给对象数据源

我需要一些问题的指导,我正在使用Entity Framework 4.0,我有一个DAL和BLL并且在页面上绑定到ObjectDataSource.

我不得不使用PIVOT动态SQL 编写存储过程,以我想要的方式从多个实体返回数据.现在我试图找出如何让Entity Framework返回一个我可以ObjectDataSource在页面上绑定到我的自定义对象,我需要使用自定义对象或动态对象,因为存储过程可以返回任意数量的列,所以我不能使用强类型类或实体,我也需要能够绑定它ObjectDataSource.

有人能指出一个很好的方法来做这个以及如何定义我的功能?请举几个代码示例.

我读到我应该尝试List<T>用于返回一个对象,因为EF不支持返回数据表/数据集,到目前为止我有以下内容,但我知道这是不正确的.

我没有太多使用仿制药,如果你能指出如何做到这一点,我相信这对很多人都有帮助.请提供函数的代码示例以及如何绑定ObjectDataSource到返回对象?

非常感谢您的帮助!!

感谢您的帮助Richard根据您对使用DbDataRecord的建议,这就是我现在的功能

ObjectDataSourceDAL中的C#函数

public List<DbDataRecord> GetData(int product_id)
{
    List<DbDataRecord> availableProducts = new List<DbDataRecord>();

    var groupData = context.ExecuteStoreQuery<DbDataRecord>("exec 
  spGetProducts @ProductID={0}", product_id);

    availableProducts = groupData.ToList<DbDataRecord>();

    return availableProducts;
}
Run Code Online (Sandbox Code Playgroud)

ObjectDataSource 在ASPX页面中

<asp:ObjectDataSource ID="ODSProductAvailability" runat="server"
        TypeName="Project.BLL.ProductBL" 
        SelectMethod="GetData"  >
     <SelectParameters>
        <asp:SessionParameter Name="product_id" SessionField="ProductID" />
     </SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)

现在,当我访问页面时,我收到此错误:

结果类型"System.Data.Common.DbDataRecord"可能不是抽象的,必须包含默认构造函数

这是因为ExecuteStoreQuery期望被定义为类还是实体?如何根据存储过程结果创建一个对象并将其分配给它?

c# stored-procedures entity-framework objectdatasource entity-framework-4

8
推荐指数
1
解决办法
2万
查看次数

将对象数组中的对象属性总结为单个对象Lodash

我一直在努力做到这一点并且遇到了问题,所以我应该向ppl询问更多经验.我有一个对象数组,可以说是被称为项目,我需要总结数组中不同对象的一些属性,并在最后总结它们.用户可以进行一些选择,我只需要总结他们给我的数组中所选择的属性,所以我想也许可以在lodash中使用_.pick函数.如果可能的话,我想在一个循环中这样做,因为items数组最多可以有1000个项目.这是一个例子:

var items = [
{'lightBlue':4, 'darkBlue':2, 'red':4, 'orange':6, 'purple':7},
{'lightBlue':6, 'darkBlue':5, 'red':1, 'orange':2, 'purple':3},
{'lightBlue':2, 'darkBlue':4, 'red':3, 'orange':4, 'purple':9}
]

var userSelectedColors = ['lightBlue', 'darkBlue'];
Run Code Online (Sandbox Code Playgroud)

我想看到的是所有蓝色的总结如下:

var summedUp = [{'lightBlue':12, 'darkBlue':11}];
Run Code Online (Sandbox Code Playgroud)

然后总结结果得到总数

var totalCount = 23
Run Code Online (Sandbox Code Playgroud)

什么是最好的和高效的方式来获得这个lodash.userSelectedColors数组可以是1或任何颜色组合.

请提供一个例子,谢谢你的帮助赞赏!

javascript arrays underscore.js lodash

8
推荐指数
2
解决办法
1万
查看次数