(使用實體框架6.2)更新的孩子在實體框架對象6
我有以下兩種型號/實體:
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; }
我的問題是:如果國家對象的孩子改變了(即城市),我該如何更新?
我可以這樣做:
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();
}
將這項工作?或者我應該專門添加每個城市?即:
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();
}
'dbContext.Countries.Cities.Clear();'絕對不會工作,因爲'Countries'是'DbSet''沒有'Cities'屬性;} –
呵呵,謝謝你的回覆Balazs。不知道我們中的一個是否感到困惑,但是DbSet確實沒有Cities屬性: ** public virtual ICollection Cities {get;組; } ** –
user1900799
不,不是'DbSet'而是一個實際的實體,即一個'Country' **實例**是包含它的東西。 –