gpt4 book ai didi

entity-framework - Automapper 缺少类型映射配置或不支持的映射

转载 作者:可可西里 更新时间:2023-11-01 10:03:46 25 4
gpt4 key购买 nike

我有 2 个类(class):

第 1 类:(域)

public class Book
{
public ObjectId Id { get; set; }
public String ISBN { get; set; }
public String Title { get; set; }
public String Publisher { get; set; }
public int? PageCount { get; set; }
public Author Author { get; set; }
}

第 2 类:(存储库)

public class Book
{
public ObjectId Id { get; set; }
public String ISBN { get; set; }
public String Title { get; set; }
public String Publisher { get; set; }

[BsonIgnoreIfNull]
public int? PageCount { get; set; }
public Author Author { get; set; }
}

为了简单起见,我创建了 2 个具有相同属性的类。我试图用代码映射 2 类:

public static void SetAutoMapperConfiguration()
{
Mapper.CreateMap<ME.Book.Book, DE.Book.Book>()
.ForMember(dest => dest.PageCount, src => src.MapFrom(dest => dest.PageCount == null ? 0 : dest.PageCount))
.ForMember(dest => dest.Author, src => src.MapFrom(dest => dest.Author == null ? null : dest.Author));
}

插入方法:

public async Task InsertBook(DE.Book book)
{
try
{
var bookCollections = GetDatabase().GetCollection<Book>(MongoCollection);
Book savedBook = new Book(book.ISBN, book.Title, book.Publisher,
new Author { FirstName = book.Author.FirstName, LastName = book.Author.LastName });

Mapper.Map(savedBook, book); //Map failed
await bookCollections.InsertOneAsync(savedBook);
}
catch(Exception e)
{
Console.WriteLine(e.GetBaseException());
}
}

然后我得到一个错误:Automapper 缺少类型映射配置或不支持的映射。

如果我删除 Author 属性,它会起作用。

有人可以帮我解决我遗漏的问题吗?感谢您阅读我的问题和我糟糕的英语。

最佳答案

您很可能缺少 Author 类的配置。我假设您还有 ME.Book.AuthorDE.Book.Author,因此您还必须在这两个类之间提供配置映射。

像这样扩展配置:

public static void SetAutoMapperConfiguration()
{
// fix namespaces and optionally provide mapping between properties
Mapper.CreateMap<ME.Book.Author, DE.Book.Author>();

Mapper.CreateMap<ME.Book.Book, DE.Book.Book>()
.ForMember(dest => dest.PageCount, src => src.MapFrom(dest => dest.PageCount == null ? 0 : dest.PageCount))
.ForMember(dest => dest.Author, src => src.MapFrom(dest => dest.Author == null ? null : dest.Author));
}

关于entity-framework - Automapper 缺少类型映射配置或不支持的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com