2017-01-27 1 views
2

DbContext 클래스가 있으며 응용 프로그램에서 첫 번째 apporach 코드를 사용하고 있습니다. "Id""Value" 열을 포함하는 몇 가지 일반적인 표준 테이블이 있고 테이블 이름과 열 이름을 전달하는 쿼리하려면 원하는 있지만 엔터티 프레임 워크에서 전달할 옵션이 없습니다.테이블 이름을 dbContext로 전달하고 Entity Framework의 테이블에서 값을 가져옵니다.

예 :

공통 테이블 :

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 ; 
    } 

엔터티 프레임 워크에서 할 수 있습니까? 가능한가?

답변

1
using (DatabaseContext dbContext = new DatabaseContext()) 
{ 
    var blogs = dbContext.Database.SqlQuery<>("query here").ToList(); 
} 
+0

답변 해 주셔서 감사 드리며 정상적으로 작동합니다. –

0

난 당신이

using (var context = new BloggingContext()) 
{ 
    var blogNames = context.Database.SqlQuery<string>( 
         "SELECT Name FROM dbo.Blogs").ToList(); 
} 

소스와 같은 사용자 지정 쿼리를 실행할 수 있다고 생각 : https://msdn.microsoft.com/en-us/library/jj592907(v=vs.113).aspx

내가 대신 주석의 답변을했다 미안하지만, 아직 배지를 가지고하지 않습니다.

0

실제로 일반적으로 EF에서는 테이블과 열 이름을 전달하지 않습니다. 결과 데이터베이스의 테이블과 열이되는 클래스와 속성이 있습니다. 귀하의 상황은 다음과 같이 보일 것이다 : 당신은 기본적으로 당신의 "표"클래스를 등록이와

public class DatabaseContext : DbContext 
{ 
    public DatabaseContext(): base(YourWebConfigConnectionStringName){} 
    public DbSet<Client_ClientDepartment> ClientDepartment { get; set; } 
    public DbSet<Client_ClientDesignation> ClientDesignation { get; set; } 

합니다. 다른 답변에 설명 된대로 또한 SQL 문을 통과 할 수 SELECT TOP 1 department WHERE ID=someId

SQL 쿼리에 비유입니다

using (var context=new DatabaseContext()) 
{ 
    var department = context.ClientDepartment.First(d => d.Id == someIdVariable); 

을하지만 너무 것입니다 :

당신은 다음과 같은 코드에서이를 해결 DatabaseContext 클래스에 DBSets 클래스를 제대로 등록한 경우에만 작동합니다.

P.S : 데이터베이스 초기자를 DBContext 클래스에 두지 않았습니다. 이는 코드에서 먼저 필요한 것입니다.

+0

이 질문을하는 주된 이유는 테이블 이름과 열 (기본 키)을 전달하는 테이블에서 값을 가져 오는 제네릭 함수를 만드는 것입니다. 엔티티 프레임 워크를 사용하여 그것을 수행하는 중이 야하지만 그것은 인라인 쿼리 수 추측 :(정보 btw 주셔서 감사. –

관련 문제