こんにちは、ローカルの sqldb を更新しようとしていますが、成功していません。
DbContext を作成しました。
public class DbContextWeather1 : DbContext
{
public DbSet<WeatherRoot> Weathers { get; set; }
}
WeatherRoot の場所:
public class Coord
{
[JsonProperty("lon")]
public double Longitude { get; set; }
[JsonProperty("lat")]
public double Latitude { get; set; }
}
public class Sys
{
[JsonProperty("country")]
public string Country { get; set; }
}
public class Weather
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("main")]
public string Main { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("icon")]
public string Icon { get; set; }
}
public class Main
{
[JsonProperty("temp")]
public double Temperature { get; set; }
[JsonProperty("pressure")]
public double Pressure { get; set; }
[JsonProperty("humidity")]
public double Humidity { get; set; }
[JsonProperty("temp_min")]
public double MinTemperature { get; set; }
[JsonProperty("temp_max")]
public double MaxTemperature { get; set; }
}
public class Wind
{
[JsonProperty("speed")]
public double Speed { get; set; }
[JsonProperty("deg")]
public double WindDirectionDegrees { get; set; }
}
public class Clouds
{
[JsonProperty("all")]
public int CloudinessPercent { get; set; }
}
public class WeatherRoot
{
[JsonProperty("coord")]
public Coord Coordinates { get; set; }
[JsonProperty("sys")]
public Sys System { get; set; }
[JsonProperty("weather")]
public List<Weather> Weather { get; set; }
[JsonProperty("main")]
public Main MainWeather { get; set; }
[JsonProperty("wind")]
public Wind Wind { get; set; }
[JsonProperty("clouds")]
public Clouds Clouds { get; set; }
[JsonProperty("id")]
public int CityId { get; set; }
[JsonProperty("name")]
[Key]
public string Name { get; set; }
[JsonProperty("dt_txt")]
public string Date { get; set; }
[JsonIgnore]
public string DisplayDate => DateTime.Parse(Date).Hour.ToString();
[JsonIgnore]
public string DisplayTemp => $"{MainWeather?.Temperature ?? 0}°
{Weather?[0]?.Main ?? string.Empty}";
[JsonIgnore]
public string DisplayIcon => $"http://openweathermap.org/img/w/{Weather?
[0]?.Icon}.png";
[JsonIgnore]
public string Icon => Weather?[0]?.Icon;
//[JsonIgnore]
//public string DisplayDescription => $"{Weather?[0]?.Description}";
}
しかし、特定のオブジェクトを削除しようとすると:
public void SaveWeather(WeatherRoot weather)
{
using (var db = new DbContextWeather1())
{
db.Database.CreateIfNotExists();
//var tmp = db.Weathers;
if (db.Weathers.Any(W => W.Name.Equals(weather.Name)))
{
var bye = (from x in db.Weathers
where x.Name.Equals(weather.Name)
select x).FirstOrDefault();
db.Weathers.Remove(bye);
db.Entry(bye).State = System.Data.Entity.EntityState.Deleted;
}
var w = new WeatherRoot()
{
CityId = weather.CityId,
Clouds = weather.Clouds,
Coordinates = weather.Coordinates,
Date = weather.Date,
MainWeather = weather.MainWeather,
Name = weather.Name,
System = weather.System,
Weather = weather.Weather,
Wind = weather.Wind
};
if (w.Date == null)
{
w.Date = DateTime.Now.ToString();
}
db.Weathers.Add(w);
db.SaveChanges();
}
}
次のエラーが表示されます。
The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.Weathers_dbo.WeatherRoots_WeatherRoot_Name". The conflict occurred in database "WeatherApp.DataProtocol.DbContextWeather1", table "dbo.Weathers", column 'WeatherRoot_Name'.
The statement has been terminated.
私はそれをグーグルで検索しようとしましたが、関連するキーしか見つかりませんでした。これは私の場合ではありません。
誰でもこれで私を助けることができますか、私は無力です。
ありがとう。