实体框架一 - 许多关系保存

时间:2012-09-26 21:40:45

标签: entity-framework

我有以下内容:

    if (chemexist == false) // conditionally creating WtrChem record
    {
      WtrChem wc = new WtrChem();
      wc.Contact = "John Smith";
      ..
      wc.Phone = ("800-888-9988");
      Db.WtrChem.Add(wc);
      Db.SaveChanges();
    }


    WtrChemDetail psw = new WtrChemDetail (); // creating details record for WtrChem
    psw.Comments = comment;
    ..
    .. 
    Db.WtrChemDetail.Add(psw);
    Db.SaveChanges();

代码将首先创建主记录,然后创建详细记录。我的作品。我想知道在最佳实践方面是否有更有效的方法来完成我的工作。

1 个答案:

答案 0 :(得分:0)

您可能希望对详细信息进行建模,其中详细信息是主设备上的属性。

或许这样的事情:

// Get the item. Include makes sure that you get the referenced detail as well.
WtrChem wc = Db.WtrChem.Include(x => x.Detail).SingleOrDefault();

if (wc == null) // creating WtrChem record
{
   // If it wasn't found, create and add
   wc = new WtrChem();
   Db.WtrChem.Add(wc);
}

wc.Contact = "John Smith";
..
wc.Phone = ("800-888-9988");

// Deal with the 
WtrChemDetail psw = new WtrChemDetail (); // creating details record for WtrChem
psw.Comments = comment;      
wc.Detail = psw;

Db.SaveChanges();

如果使用此方法,将自动对主数据和详细信息之间的引用进行排序。

您需要添加using语句才能使.Include(..) lambda正常工作:

using System.Data.Entity;