简体   繁体   English

Entity Framework 6 和 DBContext 或 DBQuery 或 DBSet 或 ObjectQuery 与标量变量

[英]Entity Framework 6 and DBContext or DBQuery or DBSet or ObjectQuery with scalar variable

I'm trying to pass a variable to my DBContext extension.我正在尝试将变量传递给我的 DBContext 扩展。 It works fine with a fixed string but when I try to use a variable I get the error "Must declare the scalar variable @p_linq_0"它适用于固定字符串但当我尝试使用变量时出现错误“必须声明标量变量@p_linq_0”

        var pn = "6-10064-01";
        // put query results into datatable
        var query = db.SWD_0004.Where(p => p.Part_Number == pn) as DbQuery<SWD_0004>;
        var numResults = query.Count();
        DataTable dt = db.DataTable(query.ToString());

        // gets column names and put into array
        List<DataRow> list = dt.AsEnumerable().ToList();
        string[] columnList = dt.Columns.Cast<DataColumn>()
                             .Select(x => x.ColumnName)
                             .ToArray();
        var rowCount = dt.Rows.Count;
        var columnCount = dt.Columns.Count;

        for (var j = 0; j < rowCount; j++)
        {

            for (var i = 1; i < columnCount; i++) // skip ID column
            {
                var columnName = columnList[i];
                var data = list[j][i].ToString();
                lstName.Items.Add(columnName);
                lstData.Items.Add(data);
            }
        }

public static class DbContextExtensions
{
    public static DataTable DataTable(this DbContext context, string query)
    {
        DbProviderFactory dbFactory = DbProviderFactories.GetFactory(context.Database.Connection);

        using (var cmd = dbFactory.CreateCommand())
        {
            cmd.Connection = context.Database.Connection;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = query;
            using (DbDataAdapter adapter = dbFactory.CreateDataAdapter())
            {
                adapter.SelectCommand = cmd;

                DataTable dt = new DataTable();
                adapter.Fill(dt);

                return dt;
            }
        }
    }
}

I've tried a few conversion methods to ObjectQuery, DBQuery, etc with no result.我尝试了一些转换为 ObjectQuery、DBQuery 等的方法,但没有结果。 I'm so confused need some direction please.我很困惑,需要一些方向。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 实体框架4.1:无法从DbQuery转换为ObjectQuery - Entity Framework 4.1: Unable to cast from DbQuery to ObjectQuery 实体框架中DBContext,DBSet &lt;&gt;的引用 - References for DBContext, DBSet<> in Entity Framework DbContext - > DbSet - >缺少Where子句(Entity Framework 6) - DbContext -> DbSet -> Where clause is missing (Entity Framework 6) Entity Framework Core 3.0 使用 DbSet vs.DbQuery 和 FromSqlRaw 时的不同结果 - Entity Framework Core 3.0 different results when using DbSet vs.DbQuery and FromSqlRaw 使用 xUnit 动态测试所有 Entity Framework Core DbContext DbSet&lt;&gt; 对象 - Dynamically Test All Entity Framework Core DbContext DbSet<> objects with xUnit 宣布DBSet <Type> 在DBcontext中 - 实体框架代码优先 - Declaring DBSet<Type> within DBcontext - Entity Framework Code First 首先使用Entity Framework 4代码在DbContext.DbSet中插入等效的InsertOnSubmit - InsertOnSubmit equivalent in DbContext.DbSet using Entity Framework 4 code first 如何在 Entity Framework Core 中使用复数 DbSet 属性名称搭建 DbContext? - How to scaffold DbContext with plural DbSet property names in Entity Framework Core? 对象查询 <T> 实体框架6中的等效项 - ObjectQuery<T> equivalent in Entity Framework 6 实体框架ObjectQuery.Include() - Entity Framework ObjectQuery.Include()
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM