У меня есть пользовательский интерфейс с 4 текстовыми полями для данного вопроса. Каждое текстовое поле - это ответы на заданный вопрос. Каждый раз, когда пользователь нажимает кнопку Сохранить. Это делает привязку модели со значениями для 4 текстового поля и QuestionId. Это из JS файла. Ниже класс модели представляет мой
1) DBModel ===> originalDBAnswers
2) UIModel ==> UITextboxclickAnswers
Я пишу это в консольном приложении, так как не могу показать свой код здесь. Спасибо за понимание.
public class SaveAnswer
{
static void Main(string[] args)
{
// This is a DB context. original values from DB that i pulled into a list
List<originalDBAnswers> orginalDBValues = new List<originalDBAnswers>()
{
//dummy data to represent my DB column values i can bind my model and filter it by questionID = 111
new originalDBAnswers() {PK_Id = 1, FK_question = 111, Value = 10 },
new originalDBAnswers() {PK_Id = 2, FK_question = 111, Value = 20 },
new originalDBAnswers() {PK_Id = 3, FK_question = 111, Value = 30 },
new originalDBAnswers() {PK_Id = 4, FK_question = 111, Value = 40 }
};
Здесь текстовое поле значения и идентификатор вопроса передаются в обработчик. Как вы можете видеть, значение для 1-го элемента изменено по сравнению с исходным значением DBValues, равным 999.
Итак, чего я ожидаю: вместо значения 10 в originalDBValue я хочу 999.
List<UITextboxclickAnswers> uiValuesofTextboxfromJSfile = new List<UITextboxclickAnswers>()
{
//dummy data to
new UITextboxclickAnswers() {FK_question = 111, Value = 999}, // here 999 is the changed in UI which needs to be save in DB
new UITextboxclickAnswers() {FK_question =111, Value = 20},
new UITextboxclickAnswers() {FK_question = 111, Value = 30},
new UITextboxclickAnswers() {FK_question = 111, Value = 40}
};
SaveModifiedAnswer(orginalDBValues, uiValuesofTextboxfromJSfile);
}
Это мой подход, который не будет работать, поскольку он только выполняет итерацию по внутреннему элементу foreach для первого элемента в внешний foreach.
private static void SaveModifiedAnswer(List<originalDBAnswers> orginalDBValues, List<UITextboxclickAnswers> uiValuesofTextboxfromJSfile)
{
**//this is how i pull the data from DB**
var multiAnswerDB = Context.GetDBSet<originalDBAnswers>().Where(a => a.FK_question == 111).ToList();
//this logic needs to be changed
foreach (var dBItem in multiAnswerDB)
{
foreach (var uiItem in uiValuesofTextboxfromJSfile)
{
//if the question key match but the value does not match in the DB
if (uiItem.FK_question == dBItem.Fk_Item && uiItem.Value != dBItem.Value)
{
//Here i need to save changes in the DB if the value is not equal for that key
dBItem.value = uiItem.Value;
Context.SaveChanges();
}
}
}
}
}
public class originalDBAnswers
{
public int PK_Id { get; set; } //databse Identity column
public int Value { get; set; } //value from Database
public int FK_question { get; set; } //FK question ID
}
public class UITextboxclickAnswers
{
public int Value { get; set; } //value from the textBox
public int FK_question { get; set; } // given question key
}
Спасибо, что посмотрели, я изо всех сил старался описать проблему, пожалуйста, не стесняйтесь задавать мне любые вопросы.