0

我目前正在使用 EF5 在 asp.net mvc 4 中工作,并且正在尝试让我的依赖注入与 Ninject 一起使用。

我在我的解决方案中做了 4 个不同的项目:

  • Gui -> 包含我的 MVC 项目
  • 业务逻辑 -> 业务逻辑
  • DataAccess -> 我的 edmx 文件和存储库(参考常见)
  • 通用 -> 模型、视图模型和 IRepository。

现在我正在尝试写这个:

存储库:

    IQueryable<PictureSource> PictureSource { get; }

存储库:

    IQueryable<PictureSource> IRepository.PictureSource
        {
            get { return context.PictureSource }
        }

现在的问题是我无法在我的 IRepository 中调用 PictureSource,因为它是我的 EF 中的一个实体,它位于我的 DataAccess 中。我尝试在我的存储库中以下列方式使用自动映射器:

     public IQueryable<PictureSourceModel> PictureSource()
        {
            Mapper.CreateMap<List<PictureSource>, List<PictureSourceModel>>();
     return Mapper.Map<List<PictureSource>,List<PictureSourceModel>>
     (context.PictureSource.ToList());
        }

这会在 dbSet 中给出有关它的错误。有什么提示吗?

4

1 回答 1

1

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

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

为了能够将 EF 实体分离到另一个项目,您可以考虑使用名为“ Ef DbContext Generator ”的 Visual Studio 扩展。

如果您需要更多帮助,请告诉我。

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


更新

将实体分离到 POCO 类

  • 安装名为“ Ef DbContext Generator ”的Visual Studio 扩展。
  • 打开您的 edmx 文件并右键单击空白区域,然后选择“添加代码生成项”
  • From the list select "Ef DbContext Generator"
  • Then just move the new file to another project
  • After that you should open .tt file to correct the .edmx file path
于 2012-09-27T14:35:26.740 回答