【问题标题】:Web API EF MVC not returning rows after manipulationWeb API EF MVC 操作后不返回行
【发布时间】:2019-07-24 10:59:48
【问题描述】:

新手 MVC/EF 开发人员在这里遇到了一个问题。我创建了一个简单的 MVC API 示例,它只是读取数据库中的一个表并以 XML 格式返回给调用方。它运行良好,但是当我操作/更改内存结果集的内容时,API 返回为空。所以我尝试做的是查询数据库,循环遍历记录并更新内存中的值(而不是数据库中的值)。到目前为止,我有这个,并且分配的值是正确的,但我最终什么也没得到。

代码:

namespace app.Repositories
{
    public class ParameterSets : IParameterSets
    {
        readonly RijndaelEcrypt re = new RijndaelEcrypt();
        public IEnumerable<ParameterSet> ListofParameterSet()

        using (DbconnectionContext context = new DbconnectionContext())
        {
            var listofparameters = from parameters in context.ParameterSet
            select parameters;

            foreach(ParameterSet x in listofparameters)
            {
                x.DbServerDatabase = re.Encrypt(x.DbServerDatabase);
                x.DbServerInstance = re.Encrypt(x.DbServerInstance);
                x.DbServerPassword = re.Encrypt(x.DbServerPassword);
                x.DbServerUser = re.Encrypt(x.DbServerUser);
            }

            return listofparameters.ToList();
        }
    }
}

感谢您的意见,非常感谢。

【问题讨论】:

    标签: c# asp.net asp.net-mvc entity-framework


    【解决方案1】:

    无法在foreach 循环中进行更新。您可以使用 for 或 LINQ Select

    for (var i = 0; i < listofparameters.Count; i++)
    {       
        listofparameters[i].DbServerDatabase = re.Encrypt(listofparameters[i].DbServerDatabase);
        listofparameters[i].DbServerInstance = re.Encrypt(listofparameters[i].DbServerInstance);
        listofparameters[i].DbServerPassword = re.Encrypt(listofparameters[i].DbServerPassword);
        listofparameters[i].DbServerUser = re.Encrypt(listofparameters[i].DbServerUser);
    }
    

    var encryptedParams = listofparameters.Select(x => new ParameterSet ()
        {
            DbServerDatabase = re.Encrypt(x.DbServerDatabase),
            DbServerInstance = re.Encrypt(x.DbServerInstance),
            DbServerPassword = re.Encrypt(x.DbServerPassword),
            DbServerUser = re.Encrypt(x.DbServerUser)
        }
    

    【讨论】:

    • 不幸的是,它们都不起作用。 for 循环 ^ 解决方案给出错误“无法使用 [] 将索引应用于 IQueryable 类型的表达式。 LINQ 解决方案不返回加密值;只是从数据库中检索到的值
    • 对不起 - 我以为你在 for 循环之前在 listofparameters 上调用了 .ToList(),现在我看到你在之后这样做了。把它放在循环之前,它应该可以工作
    • 是的,这行得通,感谢您的帮助 :) 我离得很近,但不完全在那里。
    猜你喜欢
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多