将映射的业务对象返回到EF实体分部类时出错

本文关键字:实体 出错 EF 映射 业务 对象 返回 | 更新日期: 2023-09-27 18:01:08

我正在尝试将业务对象映射到自动生成的Data First实体。但是,我在mapper类中遇到了一个错误,返回了一个new Lab

错误为"Cannot Convert expression type 'LabManager.DataAcces.Lab' to return type LabManager.BusinessObjects.BusinessObjects.Lab"

我的问题是:当我在映射器类中返回它所期望的值时,为什么会出现这个错误?

我的业务对象如下:

namespace LabManager.BusinessObjects.BusinessObjects
{
    public class Lab
    {
        public Lab()
        {
        }
        public int Id { get; set; }
        public string Name { get; set; }
        public IList<Cylinder> Cylinders { get; set; }
    }
}

我将业务对象映射到的实体是:

public partial class Lab
{
    public Lab()
    {
        this.Cylinders = new HashSet<Cylinder>();
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Cylinder> Cylinders { get; set; }
}

我只是使用了一个手动映射器类(没有AutoMapper(:

namespace EmitLabManager.DataAccess.ModelMapper
public class Mapper
{
   internal static BusinessObjects.BusinessObjects.Lab GetLabs(Lab entity)
   {
        return new Lab
        {
             Id = entity.Id,
             Name = entity.Name,
             Cylinders = entity.Cylinders
        };
    }
}

将映射的业务对象返回到EF实体分部类时出错

您很可能存在名称空间冲突。您需要在GetLabs函数中完全限定构造函数:

return new BusinessObjects.BusinessObjects.Lab
    {
         Id = entity.Id,
         Name = entity.Name,
         Cylinders = entity.Cylinders
    };

这就行了。