アダプターを使用して、具象型ではなくインターフェースをdbcontextにプラグインできるようにします。アダプタはそれ自体で動作しますが、1対1(親子)の関係をデータベースに保存するのに問題があります。
例外ソース
public void SaveDomain(IDomain domain){
_entityRepositor = new Donors();
_entityRepositor.DomainReps.Add(new DomainRep(domain));
}
InvalidOperationException
Conflicting changes to the role 'DomainRep_TopLevelDomainRep_Target' of the relationship 'Edonics.Repositor.DomainRep_TopLevelDomainRep' have been detected.
外部キープロパティとナビゲーションプロパティは同期する必要がありますか?
public class DomainRep: IDomain
{
private readonly IDomain _adaptee;
public DomainRep(IDomain adaptee)
{
_adaptee = adaptee;
}
[NotMapped]
public IDomain Adaptee
{
get { return _adaptee; }
}
public string Id
{
get { return _adaptee.Id; }
set { _adaptee.Id = value; }
}
public string TopLevelDomainRepId
{
get { return _adaptee.Tld.Id; }
set { }
}
[ForeignKey("TopLevelDomainRepId")]
public TopLevelDomainRep TopLevelDomainRep
{
get { return new TopLevelDomainRep(Tld); }
set { Tld = value.Adaptee; }
}
public ITopLevelDomain Tld
{
get { return _adaptee.Tld; }
set { _adaptee.Tld = value; }
}
public string SecondLevelDomainRepId
{
get { return _adaptee.Sld.Id; }
set { }
}
[ForeignKey("SecondLevelDomainRepId")]
public SecondLevelDomainRep SecondLevelDomainRep
{
get { return new SecondLevelDomainRep(Sld); }
set { Sld = value.Adaptee; }
}
public ISecondLevelDomain Sld
{
get { return _adaptee.Sld; }
set { _adaptee.Sld = value; }
}
}
何か案は?