假設我正在嘗試構建三層電話簿應用程序,其中以下實體對應於數據庫表,相應的DTO對象,它們通過Web服務發送到AngularJS前端,用戶可以編輯整個電話簿並通過單擊按鈕(不保存單個編輯,而是整本書)保存/放棄所有編輯。使用實體框架同步POCO對象樹
所以我的想法是發送所有Contacts
到網絡應用程序,然後用戶編輯聯繫人,詳細信息,添加東西,刪除東西,然後發送所有數據保存到Web服務。
public class Contact{
public int Id;
public string Name;
public List<PhoneNumber> PhoneNumbers;
public List<AddressEntry> Addresses;
}
public class PhoneNumber{
public int Id;
public string Number;
public string Type;
}
public class AddressEntry{
public int Id;
public string Line1;
public string Line1;
}
是否有關於如何重新連接此對象樹一些合理的方式 - List<Contact>
或(List<ContactDTO>
看起來相同),以我的數據庫上下文,並讓實體框架圖,隨着空IDS中的聯絡人應插入那些缺失的應該被刪除,那些被修改的屬性應該被更新?請記住,這些聯繫人也有子對象。
我不想爲每個實體類編寫特定的東西,因爲實際上我將擁有大約100個這些類(這是一個包含許多不同參數類型表的參數配置工具),而當前版本有超過10K行的代碼,重寫的重點是使其合理縮短。
已經嘗試過: 我已經成功地產生微弱的解決方案,其中我強迫我的實體和DTO類來實現interface IObjectWithKey { int Id; }
,然後煮了即能檢測增加了/刪除/更新,然後傳輸數據的一些通用的東西從實體到使用AutoMapper的DTO類,但是我在子列表中遇到了麻煩。
我需要自己寫嗎?會使用另一個框架,如NHibernate的幫助?