Сохранение нескольких объектов - PullRequest
1 голос
/ 21 декабря 2011

У меня есть следующие классы:

public class Test
{
    public int Id { get; set; }
    public string Title { get; set; }
    public List<TestQuestion> Questions { get; set; }
}

public class TestQuestion
{
    public int Id { get; set; }
    public int TestId { get; set; }
    public string Text { get; set; }
    public List<TestQuestionAnswer> Answers { get; set; }
}

public class TestQuestionAnswer
{
    public int Id { get; set; }
    public int TestQuestionId { get; set; }
    public string Text { get; set; }
    public bool? IsCorrect { get; set; }
}

У меня проблемы с методом Save в TestRepository.

Вот логика:

If Test.Id > 0 then update Test, otherwise create a new one
If TestQuestion.Id > 0 and TestQuestion.Text = "" delete TestQuestion from database and all Answers for that object
If TestQuestion.Id == 0 then create a new row in database
If TestQuestion.Id > 0 and TestQuestion.Text != "" then update that row
If TestQuestionAnswer.Id > 0 and Text = "" then delete it from database, otherwise call create or update method.

Сначала я использую Entity Framework Code, но я готов перейти на классический ADO.NET, если это значительно облегчит эту работу.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Есть два способа сделать это простым, и, как вы сказали, вы хотите перейти на классический ADO.NET,

  1. Создайте хранимую процедуру и поместите туда всю эту логику. Это можно сделать за один переход.

  2. Напишите кодировку ADO.NET с соответствующими запросами QUERY.

Лично я предпочитаю первый вариант, поскольку он будет использовать существующую Entity Framework.

Дайте мне знать дальнейшее направление, а также, возможно, я узнаю проблемы при использовании метода Save в TestRepository.

1 голос
/ 21 декабря 2011

Учитывая кажущуюся сложность вашего обновления, возможно, имеет смысл переместить его логику в хранимую процедуру, а затем отобразить ваши обновления в эту хранимую процедуру .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...