【发布时间】:2013-05-08 12:23:05
【问题描述】:
我有下面提到的 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 对象。但是上面的代码给出了奇怪的结果。那就是当传入的 location 对象具有 Id 比如说 15。然后我需要更新该 Id进入provider tables location Id。但是在上面的代码之后它更新为16而不是15。你能告诉我为什么吗?这里的根本问题是什么?
注意:我使用的是默认 EF 约定映射。
更新:我在这里找到了问题。那是我将provider.Location = location; GeoLocation 表自动递增 ID 增加 1。这就是原因。那我该如何避免呢?
【问题讨论】:
标签: .net c#-4.0 ef-code-first entity-framework-4.1