我有以下兩類由實體框架生成:使用Automapper到實體框架類映射到業務類
public partial class Person
{
public int id { get; set; }
public string namen { get; set; }
public int house { get; set; }
[IgnoreMap]
public virtual House House1 { get; set; }
}
public partial class House
{
public House()
{
this.Persons = new HashSet<Person>();
}
public int id { get; set; }
public string street { get; set; }
public string city { get; set; }
public ICollection<Person> Persons { get; set; }
}
然後我也有這兩個相似的類在我的業務層:
public class House
{
public House()
{
this.Persons = new HashSet<Person>();
}
public int id { get; set; }
public string street { get; set; }
public string city { get; set; }
public virtual ICollection<Person> Persons { get; set; }
}
public class Person
{
public int id { get; set; }
public string namen { get; set; }
public int house { get; set; }
}
差不多,休? 在我的業務層,我從數據庫中讀取房屋清單。然後,我整個列表映射到使用Automapper我家業務類的列表:
public List<elci.BusinessEntities.House> getHouses()
{
YardEntities cx = new YardEntities();
Mapper.Initialize(cfg => cfg.CreateMap<DataAccessLayer.House, BusinessEntities.House>());
List<DataAccessLayer.House> dhl = cx.Houses.ToList();
List<BusinessEntities.House> bhl = Mapper.Map<List<DataAccessLayer.House>, List<BusinessEntities.House>>(dhl);
return bhl;
}
然而,在下面的行我得到一個運行時異常:
Mapper.Map<List<DataAccessLayer.House>, List<BusinessEntities.House>>(dhl);
「錯誤映射類型」。
我想,這可能是因爲每個人指向一個房子,每個房子指向人。因爲我在BusinessLayer中不需要這個「圓圈」,所以我用[IgnoreMap]裝飾了這個屬性,但沒有任何成功。錯誤仍然存在。
任何暗示我做錯了什麼?
如果刪除'IgnoreMap'屬性是它的工作 – Venky
'錯誤映射Types'錯誤也給什麼類型不映射,你可以得到的。?。進入內部的異常細節並粘貼到這裏 – Venky
此外,您需要爲'Person'實體顯式創建'mapper',因爲它們在'House'實體中被引用。 – Venky