C# 将表名传递给dbContext,并从实体框架中的表中获取值

C# 将表名传递给dbContext,并从实体框架中的表中获取值,c#,sql,sql-server,entity-framework,C#,Sql,Sql Server,Entity Framework,我有一个DbContext类,并且在我的应用程序中使用了code-first-apporach。我有几个常见的标准表,其中包含“Id”和“Value”列,我想通过表名和列名查询它们,但实体框架中没有要传递的选项 例如: 常用表格: Client_ClientDepartment (Id, Value) Client_ClientDesignation (Id, Value) Client_ClientCompany (Id, Value) 我要做的是传递表名和Id以获取值。我已经创建了一个通

我有一个
DbContext
类,并且在我的应用程序中使用了code-first-apporach。我有几个常见的标准表,其中包含
“Id”
“Value”
列,我想通过表名和列名查询它们,但实体框架中没有要传递的选项

例如:

常用表格:

Client_ClientDepartment (Id, Value) 
Client_ClientDesignation (Id, Value)
Client_ClientCompany (Id, Value)
我要做的是传递表名和
Id
以获取值。我已经创建了一个通用的方法

    public string GetClientValue(string id, string tableName)
    {
        DatabaseContext dbContext = new DatabaseContext();
        //Query the database and get value based on table and id.
        string value = dbContent. ("query here")             
        return value ;
    }
我可以在实体框架中完成吗?可能吗?

使用(DatabaseContext dbContext=new DatabaseContext())
using ( DatabaseContext dbContext = new DatabaseContext()) 
{ 
    var blogs = dbContext.Database.SqlQuery<>("query here").ToList(); 
}
{ var blogs=dbContext.Database.SqlQuery(“此处查询”).ToList(); }
我相信您可以运行这样的自定义查询

using (var context = new BloggingContext()) 
{ 
    var blogNames = context.Database.SqlQuery<string>( 
                       "SELECT Name FROM dbo.Blogs").ToList(); 
}
使用(var context=new BloggingContext())
{ 
var blogNames=context.Database.SqlQuery(
“从dbo.Blogs”).ToList()中选择名称;
}
资料来源:


很抱歉,我必须回答而不是评论,但还没有获得徽章。

事实上,您通常不会在EF中传递表名和列名。 您拥有类和属性,它们成为结果数据库中的表和列。 您的上下文应该如下所示:

public class DatabaseContext : DbContext
{
    public DatabaseContext(): base(YourWebConfigConnectionStringName){}
    public DbSet<Client_ClientDepartment> ClientDepartment { get; set; }
    public DbSet<Client_ClientDesignation> ClientDesignation { get; set; }
using (var context=new DatabaseContext())
{
    var department = context.ClientDepartment.First(d => d.Id == someIdVariable);
这类似于SQL查询
选择ID=someId的前1个部门

您还可以按照其他答案中所述传递SQL语句,但只有在DatabaseContext类中将类正确注册为DBSET时,这也会起作用


注意:我在DBContext类中遗漏了数据库初始值设定项,这也是您在代码中首先需要的。

我问这个问题的主要原因是生成一个通用函数,从传递表名和列(主键)的表中获取值。我试图使用实体框架执行它,但我想它必须是一个内联查询:(顺便说一句,谢谢你提供的信息。