【问题标题】:How do I set the Where clause of an EntityDataSource in the code-behind如何在代码隐藏中设置 EntityDataSource 的 Where 子句
【发布时间】:2011-07-21 22:41:39
【问题描述】:
        PaymentsDueEntityDataSource.ContextTypeName = "Bills.DAL.BillsEntities";
        PaymentsDueEntityDataSource.EnableFlattening = false;
        PaymentsDueEntityDataSource.EntitySetName = "tblPayments_Due";

        PaymentsDueEntityDataSource.Where = "it.UserName = " + HttpContext.Current.User.Identity.Name.ToString();

        PaymentsDueEntityDataSource.Include = "tblType, tblRepeat";
        PaymentsDueEntityDataSource.EnableUpdate = true;

当我删除 Where 子句时,我的 gridview 会返回所有记录。当我硬编码从 HTML 中的 HttpContextxt 字符串生成的相同字符串时,我的 gridview 返回正确的记录。但是,当我尝试使用上面的代码时,我收到了超出范围的消息:

'kwingat' 无法在当前范围或上下文中解析。确保所有引用的变量都在范围内,加载了所需的模式,并且正确地引用了命名空间。靠近简单标识符,第 6 行,第 15 列。

有什么想法吗?

【问题讨论】:

    标签: c# .net entity-framework


    【解决方案1】:

    我认为您需要将其作为参数传递

    PaymentsDueEntityDataSource.Where = "it.UserName = @UserID";
    PaymentsDueEntityDataSource.WhereParameters.Add(new Parameter("UserID", TypeCode.Int32,  + HttpContext.Current.User.Identity.Name.ToString()));
    

    【讨论】:

    • 仅供参考,在没有参数的情况下工作。 ...在哪里(“it.OrderID = 1”)...有效。
    • 这是什么“它”。前缀以及为什么使用它?
    • @PeterX:这只是从 kyle 的原始帖子中剪切和粘贴的。使用参数的建议是我帖子中唯一相关的部分。
    • 我刚刚偶然发现了我上面的旧评论 - 结果是“它”。 prefix 是此 Linq 中的默认前缀(对于实体?),也是唯一有效的前缀。不知道他们为什么选择它。
    • @kyle 也可以通过用引号分隔值来解决问题,但这个答案更好:设置条件一次,只需插入变化的部分。
    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多