实体框架4.0插入/更新

时间:2012-03-16 14:29:03

标签: asp.net entity-framework-4

我希望有一种方法可以使用相同的代码来插入和更新。

例如,我使用实体框架插入如下所示的新客户端。

using (var context = new GenWebEntities())
{
  clientObj = new Client();

  var client = new Client
  {
    FirstName = "John",
    LastName = "Smith"
  };
  clientObj = client;

  context.SaveChanges();
}

如果我也可以使用相同的代码来更新客户端,那么我就不必编写双重代码了。

using (var context = new GenWebEntities())
{
  clientObj = context.Clients.Single(c => c.ClientId == 31);

  var client = new Client
  {
    FirstName = "Johnathan", // Updated First Name
    LastName = "Rock" // Updated Last name
  };
  clientObj = client;

  context.SaveChanges();
}

如果有一种方法可以对插入和更新进行编码,我很想知道上面这个方法是如何插入新记录的。

**更新** 我遇到这个解决方案的问题是我有一对多的关系。

示例:

我有另一个表ClientPayment是一对多。因此,当我需要更新ClientPayment时,如何引用此表进行更新?

对于我愿意做的插入:

client.ClientPayments.Add(new ClientPayment { Type = "Credit Card", CardNumber = "4111-1111-1111-1111")

感谢。

1 个答案:

答案 0 :(得分:0)

也许是这样的:

private void SaveAndUpdate(int? ClientId)
{
    using (var context = new GenWebEntities())
    {
        Client client;
        if(ClientId.HasValue)
            client=context.Clients.Single(c => c.ClientId == ClientId.Value);
        else
            client = new Client();

        client.FirstName = "Johnathan";
        client.LastName = "Rock";

        if(!ClientId.HasValue)
            context.Clients.Add(client)

        context.SaveChanges();
    }
}