小编ram*_*_rp的帖子

如何用Autofac注入AutoMapper?

将 AutoMapper 注入其他层的正确方法是什么?

我读了这篇博,但这段代码导致下面的异常

AutoMapper.dll 中发生“AutoMapper.AutoMapperMappingException”类型的异常,但未在用户代码中处理

当尝试在服务层映射时。

List<StudentViewModel> list2 = _mapper.Map<List<StudentViewModel>>(list);
Run Code Online (Sandbox Code Playgroud)

我的 AutoFac 配置如下:

public static class DependencyRegistration
{
    public static void Config()
    {
        var builder = new ContainerBuilder();

        builder.RegisterControllers(typeof(MvcApplication).Assembly);


        builder.RegisterType<TypeMapFactory>().As<ITypeMapFactory>();
        builder.RegisterType<ConfigurationStore>().As<ConfigurationStore>().WithParameter("mappers", MapperRegistry.Mappers).SingleInstance();
        builder.Register((ctx, t) => ctx.Resolve<ConfigurationStore>()).As<IConfiguration>().As<IConfigurationProvider>();
        builder.RegisterType<MappingEngine>().As<IMappingEngine>();

        //...
        var container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc dependency-injection autofac automapper

5
推荐指数
1
解决办法
1万
查看次数

这段代码是什么意思?(IEnumerable <int> query = from num in list)

这是什么意思:

IEnumerable<int> query = from num in list
                         where num < 3
                         select num;
Run Code Online (Sandbox Code Playgroud)

这是IEnumerable <T>的对象吗?

任何人都可以形容这个吗?

.net c# linq ienumerable

2
推荐指数
1
解决办法
1002
查看次数

为什么DbSet <t> .Where()默认使用IQueryable版本?

每当我们想使用IEnumerable扩展方法而不是IQueryable版本时,我们都使用AsEnumerable()方法.

var list = context.Details.AsEnumerable().Where(x => x.Code == "A1").ToList();
Run Code Online (Sandbox Code Playgroud)

为什么DbSet使用IQueryable版本的方法默认情况下,其他版本可用时(Where,Select,...)?

c# linq ienumerable iqueryable ef-code-first

2
推荐指数
1
解决办法
263
查看次数

为什么我们需要使用AsEnumerable()方法?

此代码导致NotSupportedException.

var detailList = context.Details.Where(x => x.GetType().GetProperty("Code").GetValue(x,null).ToString() == "00101").ToList();
Run Code Online (Sandbox Code Playgroud)

但是这段代码可行.

    var detailList = context.Details.AsEnumerable().Where(x => x.GetType().GetProperty("Code").GetValue(x,null).ToString() == "00101").ToList();
Run Code Online (Sandbox Code Playgroud)

MSDN说:

- AsEnumerable()返回输入为IEnumerable的输入

- DbSet是一个IEnumerable

那么为什么我们需要使用AsEnumerable()方法呢?

c# linq lambda ef-code-first

1
推荐指数
1
解决办法
612
查看次数