Task クラスをロードするたびに、db にデータがあるにもかかわらず、Document プロパティは常に null です。
タスク クラス:
public class Task
{
public virtual Document Document { get; set; }
AutoPersistenceModel のタスク マッピングのオーバーライド:
public void Override(AutoMap<Task> mapping)
{
mapping.HasOne(x => x.Document)
.WithForeignKey("Task_Id");
NHProf が実行されていると言っていることがわかるように、結合条件が間違っているため、WithForeignKey が有効にならないようです。実際、上記のコードには任意の文字列を記述できますが、違いはありません。
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Id
そのはず:
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Task_Id
IDが一致するようにデータベース内のデータをハックすると、データがロードされますが、明らかにこれは正しくありません-しかし、少なくともデータをロードすることを証明します。
編集:流暢な nhib ソースを調べて XML を見つけると、次のようになります。
<one-to-one foreign-key="Task_Id" cascade="all" name="Document" class="MyProject.Document, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
編集:スキーマは次のとおりです。
CREATE TABLE [dbo].[Document](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Task_Id] [int] NOT NULL,
CREATE TABLE [dbo].[Task](
[Id] [int] IDENTITY(1,1) NOT NULL,
誰でもアイデアはありますか?
ありがとう
アンドリュー