とても簡単な方法を書きました。クラスからデータベースにデータを保存DayWeather
します。メソッドは、その日の行がテーブルに存在するかどうかを確認し、それを更新するか、新しい行を作成します。
LINQ の新しいクラスを追加し、テーブルを Server Inspector からコンストラクターに移動することでそれを行っています。新しいクラスを生成しWeatherTBL
ます。
メソッド自体は次のようになります。
public static void SaveDayWeather(DayWeather day)
{
using (DataClassesDataContext db = new DataClassesDataContext())
{
var existingDay =
(from d in db.WeatherTBL
where d.DateTime.ToString() == day.Date.ToString()
select d).SingleOrDefault<WeatherTBL>();
if (existingDay != null)
{
existingDay.Temp = day.Temp;
existingDay.WindSpeed = day.WindSpeed;
existingDay.Pressure = day.Pressure;
existingDay.Humidity = day.Humidity;
existingDay.Cloudiness = day.Cloudiness;
existingDay.TypeRecip = day.TypeRecip;
db.SubmitChanges();
}
else
{
WeatherTBL newDay = new WeatherTBL();
newDay.DateTime = day.Date;
newDay.Temp = day.Temp;
newDay.WindSpeed = day.WindSpeed;
newDay.Pressure = day.Pressure;
newDay.Humidity = day.Humidity;
newDay.Cloudiness = day.Cloudiness;
newDay.TypeRecip = day.TypeRecip;
db.WeatherTBL.InsertOnSubmit(newDay);
db.SubmitChanges();
}
}
}
UnitTest プロジェクトから彼に電話をかけようとしたとき:
[TestMethod]
public void TestDataAccess()
{
DayWeather day = new DayWeather(DateTime.Now);
DataAccessClass.SaveDayWeather(day);
}
それは、テストが正常に合格したことを書きます。しかし、表を見ると、まだ変化していません。エラーメッセージは表示されません。誰が問題を知っていますか?
PS 下手な英語で申し訳ありません。
UDP の問題は、「... dbは、ビルドごとにデバッグまたはリリースフォルダーにコピーされ、変更されたフォルダーを上書きする可能性があります」というものでした。ありがとう @Silvermind