Entity framework 我的存储库项目引用的项目中的IRepository使实际使用它们变得困难

Entity framework 我的存储库项目引用的项目中的IRepository使实际使用它们变得困难,entity-framework,repository,automapper,Entity Framework,Repository,Automapper,我目前正在使用EF5在asp.NETMVC4中工作,我正在尝试使用Ninject进行依赖注入 我的解决方案中有4个不同的项目: Gui->包含我的MVC项目 BusinessLogic->BusinessLogic DataAccess->my edmx文件和存储库(参考通用) 通用->模型、视图模型和IRepository 现在我试着写下: i推定: IQueryable<PictureSource> PictureSource { get; } IQuery

我目前正在使用EF5在asp.NETMVC4中工作,我正在尝试使用Ninject进行依赖注入

我的解决方案中有4个不同的项目:

  • Gui->包含我的MVC项目
  • BusinessLogic->BusinessLogic
  • DataAccess->my edmx文件和存储库(参考通用)
  • 通用->模型、视图模型和IRepository
现在我试着写下:

i推定:

    IQueryable<PictureSource> PictureSource { get; }
    IQueryable<PictureSource> IRepository.PictureSource
        {
            get { return context.PictureSource }
        }
     public IQueryable<PictureSourceModel> PictureSource()
        {
            Mapper.CreateMap<List<PictureSource>, List<PictureSourceModel>>();
     return Mapper.Map<List<PictureSource>,List<PictureSourceModel>>
     (context.PictureSource.ToList());
        }
IQueryable图片资源{get;}
存储库:

    IQueryable<PictureSource> PictureSource { get; }
    IQueryable<PictureSource> IRepository.PictureSource
        {
            get { return context.PictureSource }
        }
     public IQueryable<PictureSourceModel> PictureSource()
        {
            Mapper.CreateMap<List<PictureSource>, List<PictureSourceModel>>();
     return Mapper.Map<List<PictureSource>,List<PictureSourceModel>>
     (context.PictureSource.ToList());
        }
IQueryable IRepository.PictureSource
{
获取{return context.PictureSource}
}
现在的问题是我不能在我的IRepository中调用PictureSource,因为它是来自我的EF的实体,它位于我的DataAccess中。我已尝试在我的存储库中以以下方式使用automapper:

    IQueryable<PictureSource> PictureSource { get; }
    IQueryable<PictureSource> IRepository.PictureSource
        {
            get { return context.PictureSource }
        }
     public IQueryable<PictureSourceModel> PictureSource()
        {
            Mapper.CreateMap<List<PictureSource>, List<PictureSourceModel>>();
     return Mapper.Map<List<PictureSource>,List<PictureSourceModel>>
     (context.PictureSource.ToList());
        }
public IQueryable PictureSource()
{
CreateMap();
返回Mapper.Map
(context.PictureSource.ToList());
}
这会在dbSet中给出关于它的错误。
有什么提示吗?

如果您无法从IRepository访问某些模型类,则您没有应用您的结构

PictureSourceModel
class和所有其他实体都应该在您的公共项目中。 然后“如预期”所有其他项目都可以访问这些类

<>为了能够将EF实体分离到另一个项目,您可以考虑使用VisualStudio扩展名为“<强> EF DbWordEngule<强”>

如果你需要更多的帮助,告诉我

顺便说一句:尽量不要在DAL中使用AutoMapper。它应该在Gui项目中使用


更新

将实体分离到POCO类

  • 安装名为“Ef DbContext”的Visual Studio扩展 发电机
  • 打开edmx文件,在空白区域右键单击,然后选择“添加” “代码生成项”
  • 从列表中选择“Ef DbContext生成器”
  • 然后将新文件移动到另一个项目
  • 之后,您应该打开.tt文件以更正.edmx文件路径

PictureSource是EF生成的实体。我可以使用context.PictureSource获得它。问题是我不能在我的公共层中调用它,因为我已经在我的数据访问层中引用了该层。我的存储库(包含我的上下文和context.pictureSource)仍在我的DataAccess中。由于循环引用,我无法从公共位置调用DataAccess。正如我告诉过你的。您可以使用DbContext生成器将实体类分离到另一个项目。请留意我的最新消息,我一直很忙。这对我很有效,我感谢你的帮助。