0

当我将 Linq 表达式放入由 Entity Framework 的 Code First 方法映射的域类方法中时,它会导致创建编译器生成的显示类,然后由于未映射显示类而发生映射错误。

...+<>c__DisplayClass5' 未映射。使用 Ignore 方法或 NotMappedAttribute 数据注释检查该类型是否被显式排除。验证该类型是否被定义为一个类,不是原始的、嵌套的或泛型的,并且不是从 EntityObject 继承的。

我使用的导致方法问题的表达式是:

UniqueIds.FirstOrDefault(x => x.IdentifierType.Name == keyword);

我将类型映射到:

.Where(x => x.Namespace != null
                  && !x.IsAbstract
                  && !x.IsEnum
                  && x.Namespace.StartsWith("<removedprefix>.Domain")

请注意,我实际上并没有使用“removedprefix”,出于隐私原因,我只是不想透露命名空间。

如何在域类方法中使用 Linq 表达式而不会出现上述错误?

编辑:当然,我想在不禁用延迟加载的情况下解决问题。

4

1 回答 1

1

这个线程有点旧,但我也遇到了同样的问题。由于 Linq 生成的类型是“嵌套的和私有的”,并且通常您的映射类不是,您可以像这样修改您的过滤器:

.Where(x => x.Namespace != null
            && !x.IsAbstract
            && !x.IsEnum
            && !x.IsNestedPrivate //Not nested and private
            && x.Namespace.StartsWith("<removedprefix>.Domain")

我希望这仍然有帮助。

于 2013-08-16T20:26:24.950 回答