如何创建新的模型实体,设置其值并保存?

时间:2011-04-18 11:15:19

标签: entity-framework asp.net-mvc-2

我是这样做的。它有效,但看起来很难看。而且我没有任何线索可以使它更有意义。 我正在使用.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 :(得分:0)

在图层中分离代码通常会有所帮助,因为您不会将UI与业务层或数据访问层混合...如果这就是您的要求,因为很难知道您喜欢什么改变你的代码。

否则,您的代码看起来像是所有内容的混合,难以维护并理解它的作用。

修改

您可以执行以下任一操作,而不是手动设置每个属性:

  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 */);