Как создать новый объект модели, установить его значения и сохранить его? - PullRequest
0 голосов
/ 18 апреля 2011

Я делаю это так. Это работает, но выглядит так некрасиво. И я не имею ни малейшего понятия, чтобы сделать это более значимым. Я использую .NET Framework 3.5 и MVC2

ПОПРОБУЙТЕ Объяснить немного больше ... С помощью следующего кода я снова и снова устанавливаю значение «temp». если в таблице 'temp' есть 100 полей, то я должен установить значение 100 раз. Вот что я имею в виду некрасиво.

//
    // POST: /TableA/Create
    [HttpPost]
    public ActionResult Create(TableA formdata)
    {
        TableA temp = new TableA();

        //A foreign key model in another TableB
        var tbb = myDB.TableB.First(a => a.Id == formdata.TableB.Id);
        temp.TableB = tbb;

        //fields in this table
        temp.field1= formdata.field1;
        temp.field2= formdata.field2;
        temp.field3= formdata.field3;

        myDB.AddToTableA(temp);
        myDB.SaveChanges();
        return RedirectToAction("Index");
    }

1 Ответ

0 голосов
/ 18 апреля 2011

Разделение кода по слоям обычно помогает, потому что вы не смешиваете пользовательский интерфейс с бизнес-уровнем или уровнем доступа к данным ... если это то, что вы просили, потому что довольно сложно понять, что вы хотите изменить в вашем коде.

В противном случае ваш код выглядит как смесь всего, становится трудно поддерживать и понимать, что он делает.

Редактировать

Вместо того, чтобы устанавливать каждое свойство вручную, вы можете сделать:

  1. Использовать инициализаторы объектов (функция C # 3.0)

    TableA record = new TableA {
        TableB = myDB.TableB.First(a => a.Id == formdata.TableB.Id),
        Field1 = ... ,
        ...
    };
    
  2. Использовать статические фабричные методы, предоставляемые классами сущностей:

    TableA record = TableA.CreateTableA(/* provide all values as method parameters */);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...