该类型是在未引用的程序集中定义的。c#,通用存储库模式,URF

该类型是在未引用的程序集中定义的。c#,通用存储库模式,URF,c#,entity-framework,generics,repository-pattern,C#,Entity Framework,Generics,Repository Pattern,我正在使用一个通用存储库。我的服务层与我的存储库对话,并使用automapper将实体映射到域模型。我的控制器与我的服务层通信,对实体或存储库一无所知 我正在尝试为所有基本积垢创建一个通用服务类 我的通用服务如下所示(减少): 当从我的控制器调用add时,我得到以下信息(上面标有错误的行) 我理解错误的原因,但不认为这会是一个问题,因为我的服务只接受和返回模型,不需要了解实体 是否有其他方法可以实现我想要的,这样我就可以避免引用控制器类中的实体了?为了完整性,我可能应该将此作为一个答案 只需将服

我正在使用一个通用存储库。我的服务层与我的存储库对话,并使用automapper将实体映射到域模型。我的控制器与我的服务层通信,对实体或存储库一无所知

我正在尝试为所有基本积垢创建一个通用服务类

我的通用服务如下所示(减少):

当从我的控制器调用add时,我得到以下信息(上面标有错误的行)

我理解错误的原因,但不认为这会是一个问题,因为我的服务只接受和返回模型,不需要了解实体


是否有其他方法可以实现我想要的,这样我就可以避免引用控制器类中的实体了?

为了完整性,我可能应该将此作为一个答案

只需将服务接口更改为不接受实体类型参数:

public interface IService<TModel> {
    // ...
}
公共接口iSeries设备{
// ...
}
并将类型参数保留在抽象类上

public abstract class Service<TModel, TEntity> : IService<TModel> {
    // ...
}
公共抽象类服务:iSeries{
// ...
}

为了完整起见,我可能应该这样回答

只需将服务接口更改为不接受实体类型参数:

public interface IService<TModel> {
    // ...
}
公共接口iSeries设备{
// ...
}
并将类型参数保留在抽象类上

public abstract class Service<TModel, TEntity> : IService<TModel> {
    // ...
}
公共抽象类服务:iSeries{
// ...
}

服务接口真的需要实体类型参数吗?抽象类会,这没关系,但在您的接口示例中根本没有使用它。此外,您的意思是,您的服务的客户不知道实体,因此在他们使用的合同(即接口)中使用实体是没有意义的。您必须添加项目引用,但不必在控制器中添加额外的用法。@moreON您是对的。这么简单,我不知道我怎么会错过!服务接口真的需要实体类型参数吗?抽象类会,这没关系,但在您的接口示例中根本没有使用它。此外,您的意思是,您的服务的客户不知道实体,因此在他们使用的合同(即接口)中使用实体是没有意义的。您必须添加项目引用,但不必在控制器中添加额外的用法。@moreON您是对的。这么简单,我不知道我怎么会错过!
public interface IService<TModel> {
    // ...
}
public abstract class Service<TModel, TEntity> : IService<TModel> {
    // ...
}