EF 5와 코드 우선을 사용합니다.엔티티 프레임 워크 - 첨부되지 않은 항목 자동 추가
필자는 번역 속성을 노출하는 기본 ViewModel을 가지고 있습니다. 번역은 1 ~ n 개의 번역 항목으로 구성됩니다. 번역 속성은 Usercontrol에 바인딩됩니다. Translation이 생성되고 Viewmodel의 _context.Translations.Add (t)를 통해 추가 될 때 Translation의 모든 TranslationItem도 저장되고 DB에 올바르게 저장됩니다.
하지만 기존 번역에 새 TranslationItem (t.TranslationItems.Add)을 추가하려고하면 DB에 저장되지 않습니다. context.ObjectStateManager.GetObjectStateEntries (EntityState.Added)도 요소를 반환하지 않으므로 새 번역 항목이 아직 연결되어 있지 않은 것 같습니다. TranslationItem은 Child Usercontrol 안에 추가 되었기 때문에 Entity State를 Added로 설정하기 위해 현재 Datacontext에 액세스 할 수 없습니다.
어떻게해야합니까?
편집 : 뷰 모델에서
public class Translation : BaseEntity, IValidatableObject
{
private List<TranslationItem> _translations;
public virtual List<TranslationItem> Translations
{
get{
return _translations;
}
set
{
_translations = value;
}
}s
:
Translation = new Translation(); or
Translation = repo.GetTranslation(1);
사용자의 UserControl에 바인딩 :
<Views:TranslationTextInput Translations="{Binding Translation}"/>
을 코드에서 해당 UserControl의 뒤에 :
Trans.Translations.Add(new TranslationItem() { Text = "", Lcid = new CultureInfo("en").LCID });
저장 기능 :
public void Update(Translation t)
{
if (t.Id == 0)
_context.Units.Add(t);
_context.SaveChanges();
}
나는 뷰 모델 생성자의 컨텍스트를 만들고 저장소 클래스에 전달합니다.
TranslationItem을 번역에 추가하는 데 사용할 코드를 게시 할 수 있습니까? 문제의 근원은 번역 자체가 연결되어 있지 않다는 것입니다. 번역은 어떻게 작성하고 있습니까? 당신이 원한다면 언제든지 번역을 붙이는 것으로 시작할 것입니다. –
의견을 보내 주셔서 감사합니다, 제 편집을 참조하십시오. – TheJoeIaut
다음과 같은 경우 코드가 작동합니까? Translation = repo.GetTranslation (1); 컨텍스트에서 기존 번역을 얻고 있기 때문에? 그렇다면 viewmodel에서 번역을 만들 때 컨텍스트에 번역본을 첨부하거나 한 번에 작성하고 첨부 할 repo.CreateTranslation을 만듭니다. –