![](/img/trans.png)
[英]Using Entity Framework to insert multiple child objects while updating the parent
[英]Updating child objects in Entity Framework 6
(使用實體框架 6.2)
我有以下兩個模型/實體:
public class City
{
public int CityId { get; set; }
public string Name { get; set; }
}
public class Country
{
public Country()
{
Cities new HashSet<City>();
}
public int CountryId { get; set; }
public string Name { get; set; }
public virtual ICollection<City> Cities { get; set; }
}
以及以下 DbContext
public DbSet<Country> Countries { get; set; }
我的問題是:如果 Country 對象的子項發生變化(即 Cities),我該如何更新?
我可以這樣做嗎:
List<City> cities = new List<City>();
// Add a couple of cities to the list...
Country country = dbContext.Countries.FirstOrDefault(c => c.CountryId == 123);
if (country != null)
{
country.Cities.Clear();
country.Cities = cities;
dbContext.SaveChanges();
}
那行得通嗎? 還是我應該專門添加每個城市? IE:
List<City> cities = new List<City>();
// Add a couple of cities to the list...
Country country = dbContext.Countries.FirstOrDefault(c => c.CountryId == 123);
if (country != null)
{
country.Cities.Clear();
foreach (City city in cities)
country.Cities.Add(city);
dbContext.SaveChanges();
}
您需要將Cities
添加到正在更新的特定Country
對象。
public Country Update(Country country)
{
using (var dbContext =new DbContext())
{
var countryToUpdate = dbContext.Countries.SingleOrDefault(c => c.Id == country.Id);
countryToUpdate.Cities.Clear();
foreach (var city in country.Cities)
{
var existingCity =
dbContext.Cities.SingleOrDefault(
t => t.Id.Equals(city.cityId)) ??
dbContext.Cities.Add(new City
{
Id = city.Id,
Name=city.Name
});
countryToUpdate.Cities.Add(existingCity);
}
dbContext.SaveChanges();
return countryToUpdate;
}
}
更新 :
public class City
{
public int CityId { get; set; }
public string Name { get; set; }
[ForeignKey("Country")]
public int CountryId {get;set;}
public virtual Country Country {get; set;}
}
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.