簡體   English   中英

無法從 AutoMapper 中排除屬性

[英]Unable to exclude a property from the AutoMapper

我的 asp.net 控制台應用程序中有以下代碼:-

Contact contact = new Contact()
     {
        Salutation = fields[SalutationIndex],
        FirstName = fields[FirstNameIndex],
        LastName = fields[LastNameIndex],
        Organization = fields[OrganizationIndex],
        Title = fields[TitleIndex]};

        var dbcontact = entities.Contacts.FirstOrDefault(a => a.Email.ToLower() == contact.Email.ToLower());
        Mapper.CreateMap<Contact, Contact>().ForSourceMember(x => x.ID, opt => opt.Ignore());
        dbcontact = Mapper.Map<Contact>(contact);
        entities.Entry(dbcontact).State = EntityState.Modified;

現在我想將所有屬性從contact復制到dbcontact ,但要排除 ID,因為在contact內部,ID 的默認值 = 0 ,而我希望ID保持從數據庫中檢索到的ID 但上面的代碼將修改包括ID在內的dbcontact屬性,使其等於contact內部的那些 .. 所以似乎試圖忽略ID沒有奏效。 我正在使用自動映射器 3.3.0 + 控制台應用程序正在使用 asp.net 4.5 + 實體框架 5.0

我認為你使用了錯誤的方法。 嘗試這個:

Mapper.CreateMap<Contact, Contact>().ForMember(x => x.ID, opt => opt.Ignore());
Mapper.Map<Contact, Contact>(contact, dbcontact);

看一下這個方法的總結。

執行從源對象到現有目標對象的映射。

編輯:

用答案中的那些替換這 2 行(來自您的示例):

Mapper.CreateMap<Contact, Contact>().ForSourceMember(x => x.ID, opt => opt.Ignore());
dbcontact = Mapper.Map<Contact>(contact);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM