【问题标题】:Can I call a Stored Procedure from an EntityDataSource?我可以从 EntityDataSource 调用存储过程吗?
【发布时间】:2009-04-04 20:18:55
【问题描述】:

(ASP.net 3.5,C#,SQL Express 2008)

我想要一个 Web 表单,我可以在其中使用用户输入的关键字搜索“解决方案”(我的表),然后在结果返回并填充 GridView 后。

我已经通过连接到我的实体数据模型的存储过程获得了部分搜索。在此页面上,我有一个 EntityDataSource。 如何让这个 EntityDataSource 从我的存储过程中获取数据?

我意识到我可以通过实体上下文(有效)获取结果,并将其绑定到网格,但如果我不将它连接到 EntityDataSource,我将无法获得自动分页和排序(这过去一直是我的另一场斗争)

【问题讨论】:

    标签: asp.net entity-framework stored-procedures


    【解决方案1】:

    尝试使用Function Import

    1. 右键单击实体集名称(标题部分)
    2. 选择添加->函数导入

    这是一篇不错的博文供您查看。 ADO.NET Entity Framework Tools: Stored Procedures, by Guy Burstein

    更新:抱歉,我错过了关于 EntityDataSource 的部分,所以我不知道有任何属性可以访问 EDS 中的函数导入,但您可以尝试使用 CommandText 属性.

    <asp:EntityDataSource ID="SolutionsDataSource" runat="server" 
        CommandText="DataModel.SearchFunction(@Keywords)"
        ConnectionString="name=AdventureWorksEntities">
        <CommandParameters>
            <asp:ControlParameter Name="Keywords" 
                ControlID="SearchTextbox" Type="String"/>
        </CommandParameters>
    </asp:EntityDataSource>
    

    更新:看来我有一些坏消息。在使用Reflector 深入了解EntityDataSource 之后。 EntityDataSourceView 是使用QueryBuilderUtils.ConstructQuery 构造的,然后又调用context.CreateQuery&lt;T&gt;。执行函数导入需要调用context.ExecuteFunction&lt;T&gt;。在这个版本中似乎没有对 ExecuteFunction 的任何支持,我正在阅读的博客确实提到它是计划好的,但它没有进入这个版本,无论它是否会在未来的版本中我可以不说了。

    话虽如此,我建议使用ObjectDataSource,您可以以仍然支持分页、排序等的方式构建它。如果您打开有关此主题的 ObjectDataSource 问题,请在此处给我留言,我会接受看看。

    【讨论】:

    • 感谢您提供的链接,我已通读,并且拥有。我可以通过我的 SP 进行搜索,我只是错过了可以通过 EntityDataSource(如果可能的话)将其绑定到我拥有的 GridView 的部分。
    • 我尝试将该函数添加到 CommandText,但它不起作用。登陆错误“EntityContainer 'solutioncottageEntities'中未定义EntitySet'SearchSolutions'。,靠近多部分标识符。”
    • 尝试对您的 CommandText 使用 DataModel.SearchFunction(@Keywords)。
    • 下一条错误消息:“solutioncottageModel.SearchSolutions”无法解析为有效的类型构造函数或函数。靠近函数、方法或类型构造函数,第 1 行,第 37 列。使用:CommandText="solutioncottageModel。 SearchSolutions(@SearchString)"
    • 所以这是一年前的事了,我现在也看不到这样做的方法。正在尝试objectDataSource,但我想我必须将函数添加到数据类中......
    猜你喜欢
    • 1970-01-01
    • 2020-04-03
    • 2012-05-24
    • 1970-01-01
    • 2011-01-31
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多