2014-01-22 101 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 
} 

我需要將ICTMSEntitiesContext綁定到CTMSEntitiesModel。我會怎麼做呢?當我這樣做時,我做錯了什麼?它拋出一個InvalidCastException。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。在內核中設置合適的接口。綁定(..行或實現ICTMSEntitiesContext與你的上下文? –

回答

3

您必須在CTMSEntitiesModel類中實現ICTMSEntitiesContext。否則,無法將類的實例轉換爲目標接口。

假設你正在使用的OpenAccess和上下文類可以自動生成,我建議你添加的接口實現到新的部分班級在不同的項目文件避免了原後失去了自定義代碼的事實文件被重新生成:

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

因此,CTMSEntitiesModel在一個文件中實現ICTMSEntitiesContext,在另一個文件中實現ICTMSEntitiesModelUnitOfWork。這會是一個問題嗎?它們都是 – safriss