C# 如何使用EntityFramework获取表名
我有一个SQL查询,我想使用EntityFramework和Linq调用这个查询。我怎样才能做到这一点 我想获取包含特定列名的表名: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
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();