2014-01-22 3 views
0
public partial class CTMSEntitiesModel : OpenAccessContext, ICTMSEntitiesModelUnitOfWork 
{ 
    public CTMSEntitiesModel(string connection) 
:base(connection, backend, metadataSource) 
{ } 
    // there are more IQueryable requests here 
} 

public interface ICTMSEntitiesContext : ICTMSEntitiesModelUnitOfWork 
{ 
    FetchStrategy FetchStrategy { get; set; } 
} 

public interface ICTMSEntitiesModelUnitOfWork : IUnitOfWork 
{ 
    //all the IQueryable requests are here 
} 

CTMSEntitiesModel에 ICTMSEntitiesContext를 바인딩해야합니다. 그 일을 어떻게 하죠? 내가 이것을 할 때 내가 뭘 잘못하고 있니? InvalidCastException가 throw됩니다.Ninject 유효하지 않은 캐스트 예외

kernel.Bind(typeof(CTMSDAL.ICTMSEntitiesContext)).To(typeof(CTMSDAL.CTMSEntitiesModel)).InRequestScope() 
      .WithConstructorArgument("connection", System.Configuration.ConfigurationManager.ConnectionStrings["CTMS_MVCConnection"].ConnectionString); 

제공 할 수있는 모든 도움에 감사드립니다. 감사합니다. Safris

+1

CTMSEntitiesModel은 ICTMSEntitiesModelUnitOfWork가 ICTMSEntitiesContext가 아니며 구현합니다. 커널에 적절한 인터페이스를 설정합니다 .Bind (.. row 또는 컨텍스트로 ICTMSEntitiesContext를 구현 하시겠습니까? –

답변

3

CTMSEntitiesModel 클래스에 ICTMSEntitiesContext을 구현해야합니다. 그렇지 않으면 클래스의 인스턴스를 대상 인터페이스로 변환 할 수 없습니다.

OpenAccess와 컨텍스트 클래스가 자동으로 생성 될 수 있다는 사실을 감안할 때 에 다른 구현 클래스에 새 부분 클래스를 추가하여 원본 구현 후 사용자 지정 코드가 손실되지 않도록하는 것이 좋습니다. 파일이 다시 생성되었습니다.

public partial class CTMSEntitiesModel : ICTMSEntitiesContext 
{ 
    // FetchStrategy property is already defined 
} 
+0

CTMSEntitiesModel은 한 파일에서 ICTMSEntitiesContext를 구현하고 다른 파일에서는 ICTMSEntitiesModelUnitOfWork를 구현합니다. – safriss

관련 문제