Как я могу сохранить несколько баз данных с некоторыми общими данными в базу данных? - PullRequest
1 голос
/ 30 сентября 2019

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

Контроллер:

[HttpPost]
public ActionResult MakeComplaint(CommonData model)
{
    if (ModelState.IsValid)
    {                    
        model.CreateComplaint();
        return RedirectToAction("Index");
    }
}

Модель:

public class CommonData
{
    public string Data1 { get; set; }
    public string Data2 { get; set; }
    public List<DifferentData> Differents { get; set; }

    SecondModel DataContainer()
    {  //help needed here
        SecondModel tmp = new SecondModel();
        tmp.ID = Differents[0].ID;       //how can I change it to save more collections?
        tmp.Name = Differents[0].Name;

        tmp.Data1 = Data1;
        tmp.Data2 = Data2;

        return tmp;
    }

    public int CreateComplaint()
    {
        var complaint = DataContainer();
        db.AddComplaint(complaint);
        db.Save();
    }
}

public class DifferentData
{
    public int ID { get; set; }
    public string Name { get; set; }
}

Как должен выглядеть мой DataContainer() для обработки Differents[1] иподробнее?

РЕДАКТИРОВАТЬ: My DataContainer() в настоящее время список объектов, поэтому 1 проблема решена

List<SecondModel> DataContainer()
    {   
        var listOfComplaints = new List<SecondModel>;
        for(int i = 0; i<Differents.Count; i++){
        SecondModel tmp = new SecondModel();
        tmp.ID = Differents[i].ID; 
        tmp.Name = Differents[i].Name;

        tmp.Data1 = Data1;
        tmp.Data2 = Data2;
        listOfComplaints.Add(tmp)
        }
        return listOfComplanints;
    }

EDIT2: Рабочее решение:

public void AddComplaint(List<SecondModel> model){
db.SecondModels.InsertAllOnSubmit(model) //saving multiple objects
}

1 Ответ

1 голос
/ 30 сентября 2019

Обычно вы получаете новые модели со страницы. Не как DataContainer, а как SecondModel или другая конкретная модель. Ваш DataContainer и вложенные классы в CommonData, вероятно, добавляют путаницу. Вы можете фактически удалить все это и использовать код, который вы имеете в AddComplaint, прямо из вашего контроллера, например:

[HttpPost]
public ActionResult MakeComplaint(SecondModel model)
{
    if (ModelState.IsValid)
    {                    
        db.SecondModels.InsertOnSubmit(model)
        return RedirectToAction("Index");
    }
}

и просто сделать что-то подобное для другой модели:


[HttpPost]
public ActionResult MakeSomethingElse(ThirdModel model)
{
    if (ModelState.IsValid)
    {                    
        db.ThirdModels.InsertOnSubmit(model)
        return RedirectToAction("Index");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...