반응형
모델을 사용하지 않고 엔티티 프레임워크를 사용하여 원시 SQL 쿼리를 실행하는 방법은 무엇입니까?
저는 C# ASP를 배우려고 노력하고 있습니다.NET MVC 5.그리고 저는 제가 하는 모든 일에 엔터티 프레임워크를 사용하려고 노력하고 있습니다.
그러나 원시 SQL 쿼리를 실행하고 결과를 배열로 반환해야 합니다.
지금까지 제가 한 일은 이렇습니다.
서버에 연결할 수 있는 컨텍스트 클래스를 만들었으며 런타임에 데이터베이스를 변경할 수도 있습니다.
여기 저의 상황수업이 있습니다.
using ScripterEngine.Models;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Core.EntityClient;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
namespace ScripterEngine.DataAccessLayer
{
public class BaseContext : DbContext
{
protected string connectionName;
public DbSet<Campaign> Campaign { get; set; }
/**
* Created the connection to the server using the giving connection string name
*
* @param connName
*/
public BaseContext(string connName = "BaseConnection")
: base(connName)
{
connectionName = connName;
}
/**
* Changes the default database
*
* @param databaseName
*/
public BaseContext setDatabase(string databaseName)
{
var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
//change the database before creating the new connection
builder.InitialCatalog = databaseName;
string sqlConnectionString = builder.ConnectionString;
return new BaseContext(sqlConnectionString);
}
}
}
그리고 여기서 어떻게 연결을 하는지가 제가 하는 일입니다.
BaseContext db1 = new BaseContext("server1");
var db1New = db1.setDatabase("someTableName");
string tableName = "SomeTableName";
var results = db1New.Database.SqlQuery("SELECT LOWER(column_name) AS column_name FROM information_schema.columns WHERE table_name = @tableName", tableName).ToArray();
오류가 발생합니다.
메서드 'System'의 형식 인수입니다.데이터. 엔티티.데이터베이스.사용량에서 SqlQuery( 문자열, params object[])를 유추할 수 없습니다.형식 인수를 명시적으로 지정해 보십시오.C:.NET Projects\Scripter Engine\Scripter Engine\Controllers\CampaignController.cs 427 Scripter Engine
이 원시 쿼리를 실행하려면 어떻게 해야 합니까?
명시하다string활자변론으로
var results = db1New.Database.SqlQuery<string>("SELECT LOWER(column_name) AS column_name FROM information_schema.columns WHERE table_name = @p0", tableName).ToArray();
^^^^^^
언급URL : https://stackoverflow.com/questions/35184476/how-to-execute-raw-sql-query-using-entity-framework-without-having-to-use-a-mode
반응형
'programing' 카테고리의 다른 글
| Jenkins powershell 플러그인이 항상 성공적으로 빌드됨 (0) | 2023.10.14 |
|---|---|
| Github 개인 저장소에 대한 Jenkins CI 인증 (0) | 2023.10.14 |
| fclose return value check (0) | 2023.10.14 |
| CUDA의 __공유_메모리는 언제 유용합니까? (0) | 2023.10.14 |
| vue.js에서 상위 메서드에 액세스하는 방법 (0) | 2023.10.14 |