1
擴展類我必須從一個數據庫導入的一組數據到另一個稍微不同的模式,和我使用的自動地圖考慮。我可以只寫一堆的SQL腳本,但我已經在EF數據庫和我想學習自動映射......使用自動地圖
雖然許多類的都差不多,我遇到的問題就是結構真的不同。目標模型設計了幾個更多的類。我不需要展開,而需要展開。
的目標類具有以下性質:
public class Account
{
public int Id { get; set; }
public string Name { get; set; }
public ContactInfo Location { get; set; }
public List<Policy> Policies { get; set; }
}
public class ContactInfo
{
public int Id { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public State State { get; set; }
public string Zip { get; set; }
public string EMail { get; set; }
public List<Phone> PhoneNumbers { get; set; }
}
public class Phone
{
public int Id { get; set; }
public string Name { get; set; }
public string Number { get; set; }
}
public class Policy
{
public int Id { get; set; }
public PolicyNumber PolicyNumber { get; set; }
public List<Transaction> Transactions { get; set; }
}
源表,然而,相對平坦化。
public partial class Account
{
public string AccountId { get; set; }
public string AccountName { get; set; }
public string PolicyNumber { get; set; }
}
public partial class Transaction
{
public int TransactionId { get; set; }
public int AccountId { get; set; }
public Nullable<System.DateTime> EffectiveDate { get; set; }
public string InsuredName { get; set; }
public string InsuredAddress { get; set; }
public string InsuredCity { get; set; }
public string InsuredState { get; set; }
public string InsuredZip { get; set; }
public string InsuredPhone { get; set; }
}
我可以創建地圖,但我不知道如何告訴AutoMapper處理字符串政策轉化爲政策對象,然後將其添加到策略列表。
Mapper.CreateMap<Source.Account, Destination.Account>();
更糟糕的是,源數據在事務級別上含有名稱和地址信息。在你告訴我AutoMap可能不是最好的解決方案之前,請理解這兩個源表是這個數據庫中超過40個表中的兩個,而其他的則不是那麼麻煩。
我可以配置自動映射到字符串屬性PolicyNumber轉化爲策略對象並將其添加到目標類的策略列表?
我如何能獲得姓名和地址從交易信息轉換成的ContactInfo類,並在帳戶級別添加它有什麼建議?
謝謝。
它不能自動地完成,但你可以很容易地在[自定義值解析器(http://automapper.codeplex.com/wikipage?title=Custom%20Value%20Resolvers)插件此。或者你可以手動完成這兩個表,而其餘的仍然使用AutoMapper。 –
另一個問題,你要導入多少實體? EF中的批量導入默認支持未實現,因此性能可能成爲問題。 –