如何使用SaveChanges()来保存现有数据?

时间:2017-12-05 19:58:45

标签: c# sql-server database entity-framework savechanges

我只需要在SQL中更改已保存在我的数据库中的一些数据。

这是我的代码:

var userData = new MinciUsers
{
    ApplicationUserId = stringUserId,
    Name = userUnity.firstName,
    LastName = userUnity.lastName,
    DateOfBirth = date,
    Address = userUnity.address,
    CityId = null,
    CountryId = null,
    LanguageId = null,
};

dbContext.MinciUsers.Add(userData);
dbContext.SaveData();

当我更改某些数据时,它会抛出错误,因为主键已经存在。

我在更改数据时如何使用SaveChanges()

1 个答案:

答案 0 :(得分:0)

一种方法是首先从数据库中获取相应的对象,然后通过指定新值来更改其状态。最后,您在相应的上下文类上调用SaveChanges以保留更改。

例如,如果主键在您的应用程序中表示为Id:

var minciUser = dbContext.MinciUsers.SingleOrDefault(m => m.Id == 1);
if(minciUser != null)
{
    // The record with Id 1 has been found. So you can change it's state.

    minciUser.ApplicationUserId = stringUserId;

    // here you will add the rest of the fields you want to update.       

    dbContext.SaveChagnes();
}

<强>更新

另一种方法是使用AddOrUpdate

var userData = new MinciUsers
{
    ApplicationUserId = stringUserId,
    Name = userUnity.firstName,
    LastName = userUnity.lastName,
    DateOfBirth = date,
    Address = userUnity.address,
    CityId = null,
    CountryId = null,
    LanguageId = null,
};

dbContext.MinciUsers.AddOrUpdate(userData);
dbContext.SaveChanges();