【发布时间】:2013-02-26 15:39:11
【问题描述】:
我正在尝试将业务对象映射到数据优先的自动生成实体。但是,我在我的映射器类中遇到错误,我正在返回 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
};
}
}
【问题讨论】:
-
为什么你只在方法声明中使用 Lab 的完整类型名,而不是到处使用?
-
@Kniganapolke 这是个好问题。我想我应该。我以前从来没有真正获得过这样的资格。我通常尽量保持我的对象名称相当独特,因此不必以这种方式限定。我很可能也会重构名称和冗余命名空间(BusinessObjects.BusinessObjects)。
标签: c# entity-framework