我被困在我的项目中,非常感谢任何帮助。我正在使用EF 5 Code-First方法。
这是我的基本实体:
...
public virtual Guid Id
{
get
{
return _id;
}
protected set { }
}
public virtual bool IsEnabled { get; set; }
...
我的实体:
...
public string CountryName { get; set; }
public string CountryCode { get; set; }
public Coordinate CountryCoordinate { get; set; }
public virtual ICollection<City> Cities
{
get
{
if (_cities == null)
{
_cities = new HashSet<City>();
}
return _cities;
}
private set
{
_cities = new HashSet<City>(value);
}
}
...
它的配置:
public CountryEntityConfiguration()
{
this.HasKey(c => c.Id);
this.Property(c => c.CountryName)
.HasMaxLength(64)
.IsRequired();
this.Property(c => c.CountryCode)
.HasMaxLength(4)
.IsRequired();
this.HasMany(c => c.Cities)
.WithRequired()
.HasForeignKey(ci => ci.CountryId)
.WillCascadeOnDelete(true);
}
存储库还有其他东西,坐标值对象和城市的复杂类型等。
现在,当我尝试通过 CountryRepository 调用 GetEntity(Guid Id) 时,我收到一条错误消息:
作为对象键一部分的属性值与存储在 ObjectContext 中的相应属性值不匹配。如果作为键的一部分的属性返回不一致或不正确的值,或者在对作为键的一部分的属性进行更改后未调用 DetectChanges,则可能会发生这种情况。
我进行了很多搜索,但每个答案都是关于组合 PK、空列等。在测试时,我为 DB 播种,可以看到行和列都可以。
那么我做错了什么,有什么想法吗?