私は以下の2つのモデルを持っています。
地理位置情報モデル:
public class GeoLocation {
public GeoLocation() { }
public int Id { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
}
プロバイダーモデル:
public class Provider
{
public Provider()
{
Id = Guid.NewGuid();
Created = DateTime.Now;
}
public Guid Id { get; set; }
[Required]
public string Name { get; set; }
public virtual GeoLocation Location { get; set; }
}
リポジトリ方式:
public void SetLocation(string providerKey, GeoLocation location)
{
var provider = (from p in Catalog.Providers
where p.Key == providerKey
select p).Single();
provider.Location = location;
Catalog.SaveChanges();
}
上記のように、Provider Table の Location オブジェクトを更新する必要があります。しかし、上記のコードでは奇妙な結果が得られます。つまり、Id を持つ受信ロケーションオブジェクトが 15 としましょう。次に、その ID をプロバイダー テーブルの location Idに更新する必要があります。しかし、上記のコードの後15 ではなく 16 として更新されます。理由を教えてください。ここでの根本的な問題は何ですか?
注:デフォルトの EF 規則マッピングを使用しています。
更新:ここで問題が見つかりました。それは、GeoLocationprovider.Location = location;
テーブルの自動インクリメント Id の増加を 1に設定したときです。それが原因です。どうすればそれを回避できますか?