2014-09-11 6 views
0

Прошу прощения за непонятное название!EF 4.0: лучший способ добавить новые данные

Что я пытаюсь очень просто, у меня есть эти таблицы:

Maintable(ID) 
Child1(MainTableID, ID) 
Child2(MainTableID, ID) 
Child3(MainTableID, ID) 
Child4(MainTableID, ID) 

Child2, Child3 и Child4 созданы из ребенка1, поэтому я их заново каждый раз Maintable или Child1 изменяется:

Child2 = GetChild2FromChild1() 
Child3 = GetChild3FromChild1() 
Child4 = GetChild4FromChild1() 

После этого, я просто удалить старые таблицы, и сохранить вновь созданный:

using (var context = new EF()) 
{ 
    context.DeleteObject(child2); // only the ones belong to Maintable 
    context.DeleteObject(child3); 
    context.DeleteObject(child4); 
}  

using (var context = new EF()) 
{ 
    // because i always delete child2->4 , so i always set their state to be Added 
    // here i will add the new tables, something like this : 
    foreach (var child2 in Maintable.child2) 
    { 
     counterID--; 
     child2.State = State.Added; 
     child2.ID = counterID; 
    } 


    context.SaveChanges(); 
} 

Я знаю, что это трудно понять, так вот шаги:

  • Объект Maintable содержит четыре дочерние таблицы (1-> 4)
  • Everytime мне нужно обновить объект Maintable, мне придется удалить: Maintable.Child2, Maintable.Child3, Maintable.Child4, кроме ребенка1
  • Тогда я буду добавлять новые данные в ребенка2, Child3, Child4

Но это решение действительно боль в заднице, я постоянно получаю ошибки, которые я едва ли могу понять, почему, и странные результаты lts и т. д., например, я ждал послеобеденной отладки без какого-либо положительного прогресса, прежде чем публиковать этот вопрос!

Так что я хочу спросить, есть еще один способ, который бы удовлетворить мои потребности, но и «чистый» один, потому что я думаю, что моя проблема не очень сложна, и я не очень хорошо знаком с C#

+2

Это может быть мне, но я не понял из того, что вы просите. Это может быть и с другими людьми, подумайте над тем, чтобы пересмотреть свой вопрос. – Peter

+0

Вы пытаетесь добавить новые строки? или обновить строки? ваш вопрос на самом деле не так ясен:/ –

+0

wait, я отредактирую его, спасибо – NeedAnswers

ответ

1

Насколько я понимаю, вы на самом деле просто редактируете ID child2-3-4. Если бы я понял, что это - путь, который нужно обновлять.

using (var context = new EF()) 
{ 
    foreach (var child2 in Maintable.child2) 
    { 
     counterID--; 
     child2.ID = counterID; 
    } 

    foreach (var child3 in Maintable.child3) 
    { 
     counterID--; 
     child3 .ID = counterID; 
    } 

    foreach (var child4 in Maintable.child4) 
    { 
     counterID--; 
     child4 .ID = counterID; 
    } 

    context.SaveChanges(); 
} 

Но я сомневаюсь, что это то, что вы спрашиваете:/

+0

Спасибо, но это не то, что я хочу, спасибо в любом случае – NeedAnswers

+0

Это лучше разработанная версия моего вопроса, пожалуйста, посмотрите: http://stackoverflow.com/questions/25800089/ef-4-0-confusing-in-handling-foreign -tables – NeedAnswers

Смежные вопросы