Wenn ich eine Aufgabenklasse lade, ist die Dokumenteigenschaft immer null, obwohl Daten in der Datenbank vorhanden sind.
Aufgabenklasse:
public class Task
{
public virtual Document Document { get; set; }
Überschreibung der Aufgabenabbildung für AutoPersistenceModel:
public void Override(AutoMap<Task> mapping)
{
mapping.HasOne(x => x.Document)
.WithForeignKey("Task_Id");
Wie Sie Form sehen können, was NHProf sagt, wird ausgeführt, die Join-Bedingung ist falsch, die WithForeignKey doesnt scheinen Wirkung zu nehmen. In der Tat kann ich jede Zeichenfolge in den obigen Code schreiben und es macht keinen Unterschied.
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Id
So sollte es sein:
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Task_Id
Wenn ich die Daten in der Datenbank hacke, so dass die IDs übereinstimmen, werden die Daten geladen, aber offensichtlich ist dies nicht korrekt - aber zumindest beweist es, dass es Daten lädt.
Bearbeiten: Stöbern in der fluent nhib Quelle zu finden, die XML produziert diese:
<one-to-one foreign-key="Task_Id" cascade="all" name="Document" class="MyProject.Document, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
Bearbeiten: Hier ist das Schema:
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,
Hat jemand eine Idee?
Danke
Andrew