[ Entity Framework 5.0 RC で Code First DbContext を使用する]
ナビゲーション プロパティから派生した ID を持つエンティティ
public class Domain
{
private string _id;
private SecondLevelDomain _secondLevelDomain;
private TopLevelDomain _topLevelDomain;
public string Id
{
get
{
// Trigger setter synthesis
Id = null;
return _id;
}
set
{
string parentId = String.Empty;
if (Sld.Id != null)
output += Sld.Id + " ";
if (Tld.Id != null)
output += Tld.Id;
_id = parentId;
}
}
public string SecondLevelDomainId
{
get;
set;
}
[ForeignKey("SecondLevelDomainId")]
public SecondLevelDomain Sld
{
get
{
return _secondLevelDomain
?? (_secondLevelDomain = new SecondLevelDomain());
}
set
{
Debug.WriteLine("Foreign Setter Not Called Before Its Too Late");
_secondLevelDomain = value;
}
}
public string TopLevelDomainId
{
get;
set;
}
[ForeignKey("TopLevelDomainId")]
public TopLevelDomain Tld
{
get
{
return _topLevelDomain
?? (_topLevelDomain = new TopLevelDomain());
}
set { _topLevelDomain = value; }
}
}
データベースからのドメイン作成時に親 ID が空と評価される
public CheckDomainInDatabase(string domainId) {
var domainFromDatabase = Repositor.Domains.Find(domainId);
}
InvalidOperationException: The value of a property that is part of an object's key does not match the corresponding property value stored in the ObjectContext. This can occur if properties that are part of the key return inconsistent or incorrect values or if DetectChanges is not called after changes are made to a property that is part of the key.
これらのドメインを集約識別子で取得できるようにする必要があります。これは、他のプロパティの一部を変更する必要があるためです (表示されていません)。しかし、このエラーにより、そのトラックから外れています...