2016-06-23 4 views
0

엔터티 6.0을 사용하여 저장 프로 시저를 호출하려고합니다. 이 해결책을 찾은 후에 그들은 herehere을 해결하지 못했습니다. 문제는 반환 된 열 중 하나에 공백이 있습니다 (저장 프로 시저를 변경할 수 없음). 내 모델은 id하지만에 대한 값을 가지고,공백으로 열을 반환하는 저장 프로 시저를 호출하는 방법

MyModel.cs

using System; 
... 

namespace ... 
{ 
    public class MyModel 
    { 
     [Display(Name = "ID")] 
     public string id{ get; set; } 

     [Display(Name = "Number Of ID")] 
     [Column("Number Of ID")] 
     public int number_Of_ID { get; set; } 

    } 

    public class MyModelContext : DbContext 
    { 
     public DbSet<MyModel> MyModels{ get; set; } 
    } 
} 

MyController.cs

using System; 
... 

namespace ... 
{ 
    public class MyController : Controller 
    { 
     private MyEntities db = new MyEntities(); 

     public ActionResult Index() 
     { 

      var query = @"exec usp_getIds"; 

      var results = db.Database.SqlQuery<MyModel>(query); 
      return View(results); 
     } 
    } 

코드를 디버깅

을 : 나는 아무 성공 다음 시도했습니다 number_Of_ID. 값은 항상 0입니다. 또한 데이터 형식을 string으로 변경하려고 시도했으며 null을 반환합니다. 도와주세요.

+1

- 숫자가 다시 올 것이다 그런 식으로 당신은 캐스트 할 수 있습니다 : 다음은 컨트롤러에 변경되었습니다 그것이 숫자임을 검증 한 후에 그것을 사용하는 코드에서. –

+0

불행히도, 나는 문자열을 사용해 보았는데'null'을 반환합니다. – usr4896260

답변

1

내가 DBContext을 사용할 수없는 동안 SQLDataAdapter을 사용하는 해결책을 발견했습니다. 공백이있는 열로도 성공적으로 호출 할 수있었습니다. number_of_ID이, 공간이 될 모델의 문자열 필드를 만들 수 있다면

MyController.cs

using System; 
... 

namespace ... 
{ 
    public class MyController : Controller 
    { 
     public ActionResult Index() 
     { 
      var myResultsList = new List<MyModel>(); 
      string connectionString = ConfigurationManager.AppSettings["myDBConn"]; 
      var conn = new SqlConnection(connectionString); 
      conn.Open(); 
      string query = @"usp_getIds"; 
      using (var sqlAdpt = new SqlDataAdapter(query, conn)) 
      { 
       sqlAdpt.SelectCommand.CommandType = CommandType.StoredProcedure; 
       var results = new DataSet(); 
       sqlAdpt.Fill(results); 
       myResultsList= results.Tables[0].AsEnumerable(). 
       Select(dataRow => new MyModel 
        { 
         id = dataRow.Field<string>("ID"), 
         numberOfID = dataRow.Field<int>("Number Of ID") 
        }).ToList(); 

      } 
      return View(myResultsList); 
     } 
    } 
1

열 이름이나 값에 공백이 있음을 의미합니까?

저장 프로 시저 usp_getIds를 들어

, 당신이 할 수있을 것입니다 :

List<usp_getIds_Result> results = db.usp_getIds().ToList(); 

당신이 모델에 절차를 추가 할 때 클래스 usp_getIds_Result가 자동으로 생성됩니다.

시도해 보는 것이 도움이되는지 확인하십시오.