2014-09-13 2 views
3

EF 6 코드의 첫 번째 모델을 확장하려고하는데 오류가 발생합니다. 나는 그 문제에 관해 많은 정보를 찾지 못했고 찾지 못했다. 동일한 네임 스페이스에서 내 모델과 동일한 이름의 부분 클래스를 만들었습니다. 여기 내 모델과 확장은 다음과 같습니다Entity Framework 6 모델을 확장하는 방법

모델 -

namespace DataAccess.Models 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.ComponentModel.DataAnnotations.Schema; 
    using System.Data.Entity.Spatial; 

    [Table("Vehicle")] 
    public partial class Vehicle 
    { 
     public Vehicle() 
     { 
      WorkOrders = new HashSet<WorkOrder>(); 
     } 

     public int VehicleID { get; set; } 

     public int CustomerID { get; set; } 

     [StringLength(17)] 
     public string VIN { get; set; } 

     public int Mileage { get; set; } 

     [StringLength(4)] 
     public string Year { get; set; } 

     [StringLength(50)] 
     public string Make { get; set; } 

     [StringLength(50)] 
     public string Model { get; set; } 

     [StringLength(50)] 
     public string Engine { get; set; } 

     [StringLength(50)] 
     public string BodyStyle { get; set; } 

     [StringLength(50)] 
     public string Transmission { get; set; } 

     [StringLength(50)] 
     public string Trim { get; set; } 

     [StringLength(50)] 
     public string Origin { get; set; } 

     public bool IsDeleted { get; set; } 

     [StringLength(25)] 
     public string License { get; set; } 

     public bool? Is4WD { get; set; } 

     [StringLength(25)] 
     public string Color { get; set; } 

     public string Notes { get; set; } 

     [StringLength(2)] 
     public string LicenseState { get; set; } 

     public virtual Customer Customer { get; set; } 

     public virtual ICollection<WorkOrder> WorkOrders { get; set; } 
    } 
} 

확장 -

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace DataAccess.Models 
{ 
    public partial class Vehicle 
    { 
     public string CustomerName { get; set; } 
    } 
} 

내가 점점 오전 오류 :

{는 " 'AiContext'컨텍스트를 뒷받침하는 모델이 데이터베이스가 생성되었습니다. 에게 데이터베이스 (http://go.microsoft.com/fwlink/?LinkId=238269)를 업데이트하는 코드 첫 번째 마이그레이션을 사용하는 것이 좋습니다 "} 내가 저장 프로 시저를 호출하려고이 오류를 얻고있다

을보다 구체적으로는,이 라인에서 발생되고있다 :..

using (ObjectContext objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dbContext).ObjectContext) 
.이 방법의

:.

public List<Vehicle> SearchVehicles(string vin, 
              string license, 
              string year, 
              string make, 
              string model) 
     { 
      SqlParameter vinParameter; 
      if (vin != null) 
      { 
       vinParameter = new SqlParameter("vin", vin); 
      } 
      else 
      { 
       vinParameter = new SqlParameter("vin", ""); 
      } 

      SqlParameter licenseParameter; 
      if (license != null) 
      { 
       licenseParameter = new SqlParameter("license", license); 
      } 
      else 
      { 
       licenseParameter = new SqlParameter("license", ""); 
      } 

      SqlParameter yearParameter; 
      if (year != null) 
      { 
       yearParameter = new SqlParameter("year", year); 
      } 
      else 
      { 
       yearParameter = new SqlParameter("year", ""); 
      } 

      SqlParameter makeParameter; 
      if (make != null) 
      { 
       makeParameter = new SqlParameter("make", make); 
      } 
      else 
      { 
       makeParameter = new SqlParameter("make", ""); 
      } 

      SqlParameter modelParameter; 
      if (model != null) 
      { 
       modelParameter = new SqlParameter("model", model); 
      } 
      else 
      { 
       modelParameter = new SqlParameter("model", ""); 
      } 

      using (AiContext dbContext = new AiContext()) 
      { 
       using (ObjectContext objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dbContext).ObjectContext) 
       { 
        return objectContext.ExecuteStoreQuery<Vehicle>("SearchVehicles @VIN, " + 
                    "@License, @Year, " + 
                    "@Make, @Model", 
                    vinParameter, 
                    licenseParameter, 
                    yearParameter, 
                    makeParameter, 
                    modelParameter).ToList(); 
       } 
      } 
     } 

내가 오류 익숙 EF 분명히 내가 모델을 변경했습니다 생각하고 데이터베이스를 업데이트하기 위해 나를 원하는 왜이 오류가 발생하는지 또는 속성이나 비즈니스 로직을 추가하기 위해 모델을 확장하는 다른 방법에 대한 아이디어가 있습니까? 사전에 도움을 주셔서 감사합니다.

답변

4

비즈니스 논리에서만 사용하고 데이터베이스의 열로 매핑하지 않으려는 경우. [NotMapped] 속성을 추가해야합니다.

[NotMapped] 
public string CustomerName { get; set; } 
+0

와우! 간단하지? 그러나, 나는 시험해 보았습니다. 1 시간 씩 인터넷 검색을하고 3 개의 기사를 읽고이 해결책을 찾지 못했습니다. 고맙습니다. 하나의 질문은 ... 동일한 속성을 메소드에도 추가해야하는 것인가? – flyNflip

+0

'NotMapped'라고 표시된 공용 속성 만 가능합니다 .. –

+1

Great! 지식을 공유해 주셔서 감사합니다. – flyNflip

관련 문제