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。

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

我将不胜感激您能提供的所有帮助!谢谢,萨弗里斯

4

1 回答 1

3

你必须ICTMSEntitiesContextCTMSEntitiesModel类中实现。否则无法将类的实例强制转换为目标接口。

鉴于您使用的是 OpenAccess 并且可能会自动生成上下文类,我建议您将接口实现添加到不同项目文件中的新部分类中,以避免在重新生成原始文件后丢失自定义代码:

public partial class CTMSEntitiesModel : ICTMSEntitiesContext
{
    // FetchStrategy property is already defined
}
于 2014-01-22T16:33:53.947 回答