Итак, в моем домене есть модель, подобная этой:
public class Product
{
public virtual Tag Methodology { get; set; }
}
Затем в проекте веб-формы я обновляю ее так:
if (!string.IsNullOrWhiteSpace(ddlMethodology.SelectedValue))
product.Methodology = TagRepo.GetTagById(int.Parse(ddlMethodology.SelectedValue));
else
product.Methodology = null;
Но это не обновлялоськогда product.Methodology
ранее был установлен на объект, и я хотел изменить его обратно на ничто.Т.е. строка product.Methodology = null;
не работает должным образом.
Когда я запустил ее в отладчике, я обнаружил, что иногда она будет работать, а иногда - нет.После небольшого растягивания волос я понял, что это связано с типом прокси, который структура сущностей создавала для этого свойства во время выполнения, и она работала, когда я проверял его в отладчике.
Итак, чтобы исправитьпроблема, я создал этот хак, который хорошо работает: (ПРИМЕЧАНИЕ: теперь else if
)
if (!string.IsNullOrWhiteSpace(ddlMethodology.SelectedValue))
product.Methodology = TagRepo.GetTagById(int.Parse(ddlMethodology.SelectedValue));
else if (product.Methodology != null)
product.Methodology = null;
Итак, я думаю, мои вопросы:
- Я делаю что-то не так?
- Есть ли еще один способ сделать это, не забывая каждый раз совершать взлом?
- Может ли это быть ошибкой в CTP-коде сущностного кода первого CTP?
Ура,
Чарльз