Ogni volta che carico una classe Task, la proprietà Document è sempre nullo, nonostante siano presenti dati nel db.fluente nibernato HasOne WithForeignKey non funziona
classeTask:
public class Task
{
public virtual Document Document { get; set; }
Corrispondenza attività override per AutoPersistenceModel:
public void Override(AutoMap<Task> mapping)
{
mapping.HasOne(x => x.Document)
.WithForeignKey("Task_Id");
Come si può vedere formano ciò che NHProf dice è in esecuzione, la condizione di join è sbagliato, per la squadra di WithForeignKey sembrano prende effetto. In effetti, posso scrivere qualsiasi stringa nel codice sopra e non fa differenza.
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Id
Dovrebbe essere:
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Task_Id
Se i hackero i dati nel DB in modo che gli ID corrispondono, i dati vengono caricati, ma ovviamente questo non è corretto - ma almeno dimostra carica dati.
Edit: frugando nella fonte nhib fluente per trovare l'XML produce questo:
<one-to-one foreign-key="Task_Id" cascade="all" name="Document" class="MyProject.Document, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
Edit: Ecco lo 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,
Chiunque ha ottenuto tutte le idee?
Grazie
Andrew
A possibilità sono d'accordo, ma perché Task_Id non viene visualizzato da nessuna parte? (anche se è sbagliato e quindi causerebbe un'eccezione - ma non lo è) –
Che funziona, tuttavia significa che ho bisogno di una proprietà Task_id su Documento, che preferirei non avere. Funziona per ora però grazie –