Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用EntityFramework获取表名_C#_Sql_Entity Framework_Linq - Fatal编程技术网

C# 如何使用EntityFramework获取表名

C# 如何使用EntityFramework获取表名,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我有一个SQL查询,我想使用EntityFramework和Linq调用这个查询。我怎样才能做到这一点 我想获取包含特定列名的表名: SELECT DISTINCT t.name AS 'TableName' FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%CustomField%' ORDER BY TableNa

我有一个SQL查询,我想使用EntityFramework和Linq调用这个查询。我怎样才能做到这一点

我想获取包含特定列名的表名:

SELECT    DISTINCT t.name AS 'TableName'
FROM        sys.columns c
JOIN        sys.tables  t   ON c.object_id = t.object_id
WHERE       c.name LIKE '%CustomField%'
ORDER BY    TableName

我不知道你们为什么要在实体中搜索这样的表

Msdn中充满了。 它的总和是:返回ObjectQuery的参数化查询


您可以通过context.Database.sqlquery执行上述查询。这个问题没有意义。。。您需要阅读实体框架,这看起来像一个。您应该告诉我们您想要实现什么,这样我们就可以判断查找表名是否合适。并标记所处的EF版本。DbContext隐藏数据库中表和列的实际名称。这使得它可以重用,用于具有类似结构但标识符不同的数据库。如果DbContext的用户需要知道表的名称,则这是一个设计缺陷。需要这样做的功能应该是添加到派生DbContext中的功能。
using (myEntities myContext = new myEntities())
{   
    // Create a query string
    string myQuery = @"SELECT    DISTINCT t.name AS 'TableName' "+
                        "FROM        sys.columns c "+
                        "JOIN        sys.tables  t   ON c.object_id = t.object_id "+
                        "WHERE       c.name LIKE '%@CustomField%' "+
                        "ORDER BY    TableName"; 

    // Create a query
    //If you return a primitive type you can use ObjectQuery<string>
    ObjectQuery<DbDataRecord> tableQuery = new ObjectQuery<DbDataRecord>(myQuery, myContext);

    // Add parameters.
    tableQuery.Parameters.Add(new ObjectParameter("CustomField", "FOOBAR"));

    // Go through the Result 
    foreach (DbDataRecord rec in tableQuery)
    {
        Console.WriteLine("TableName\t [{0}]", rec[0]);
    }
}
    string Query = "SELECT    DISTINCT t.name AS 'TableName' "+
                            "FROM        sys.columns c "+
                            "JOIN        sys.tables  t   ON c.object_id = t.object_id "+
                            "WHERE       c.name LIKE '%@table%' "+
                            "ORDER BY    TableName"

    vr db = new DB();     
    string table = "YourTableName";     
    var result = db.Database.SqlQuery<string>(Query, new SqlParameter("@table", table)).ToList();