城のActiveRecord:1対1
-
19-09-2019 - |
質問
城のActiveRecordに一対一の団体で遊んでいる間、私は次のような問題につまずいます:
私は(この場合は、ユーザーUSERPROFILE)1対1の関係をモデル化しようとしています。私はすでに、これが最善の方法でもよいが、(私はまだ何が起こっているのかを理解しようとしている)のは、一瞬のためにそれを無視せないかもしれないということを学びました。
[ActiveRecord]
public class TestUser : ActiveRecordBase<TestUser>
{
[PrimaryKey(PrimaryKeyType.GuidComb)]
public Guid Id { get; set; }
}
[ActiveRecord]
public class TestUserProfile : ActiveRecordBase<TestUserProfile>
{
[PrimaryKey(PrimaryKeyType.GuidComb)]
public Guid Id { get; set; }
[OneToOne(Cascade = CascadeEnum.All, Fetch = FetchEnum.Join)]
public TestUser User { get; set; }
}
私は、データベース内の同じIDを得、プロファイルをユーザに保存するには、次のコードを期待します:
[Test]
public void save_profile_saves_user()
{
var profile = new TestUserProfile
{
User = new TestUser()
};
profile.Save();
}
実際の結果は、しかし、両方のオブジェクトは異なるキーで保存されていることです。私は??何かが足りないのです。
解決
私は答え自分自身を発見しました。 OneToOneが定義されている関係の側のPrimaryKeyTypeはPrimaryKeyType.Foreignの主キーを持つ必要があります:
[ActiveRecord]
public class TestUserProfile : ActiveRecordBase<TestUserProfile>
{
[PrimaryKey(PrimaryKeyType.Foreign)]
public Guid Id { get; set; }
[OneToOne(Cascade = CascadeEnum.All, Fetch = FetchEnum.Join)]
public TestUser User { get; set; }
}
バックより徹底的にドキュメントを読み込むに...
所属していません StackOverflow