Sie global IReferenceConvention
hinzufügen können verzögertes Laden für bestimmte Fremdschlüssel entfernen:
public class AggregateAttribute : Attribute {
}
public class ReferenceConvention : IReferenceConvention, IReferenceConventionAcceptance, IHasManyConvention, IHasManyConventionAcceptance {
public void Apply(IManyToOneInstance instance) {
instance.Fetch.Join();
}
public void Accept(IAcceptanceCriteria<IManyToOneInspector> criteria) {
criteria.Expect(x => x.Property != null && x.Property.MemberInfo.GetCustomAttributes(typeof(AggregateAttribute), false).Any());
}
public void Apply(IOneToManyCollectionInstance instance) {
instance.Fetch.Select();
}
public void Accept(IAcceptanceCriteria<IOneToManyCollectionInspector> criteria) {
criteria.Expect(x => x.Member != null && x.Member.IsDefined(typeof(AggregateAttribute), false));
}
}
Verwenden Aggregat Attribut als:
public class FirstRecord {
public int Id { get; set; }
public int Name { get; set; }
// Disable lazy load
[Aggregate]
public SecondRecord SecondRecord { get; set; }
// Lazy load
public ThirdRecord ThirdRecord { get; set; }
}
public class SecondRecord {
public int Id { get; set; }
public int Name { get; set; }
}
public class ThirdRecord {
public int Id { get; set; }
public int Name { get; set; }
}
Dieser Code wird das verzögerte Laden für jede Eigenschaft mitentfernenAttribut auf es, wenn Sie sich für alle Eigenschaften faul deaktivieren wollen, dann diese Attribut und Update-Konvention Klasse entfernen sein:
public class ReferenceConvention : IReferenceConvention, IHasManyConvention{
public void Apply(IManyToOneInstance instance) {
instance.Fetch.Join();
}
public void Apply(IOneToManyCollectionInstance instance) {
instance.Fetch.Select();
}
}
Mit diesem Code nhibernate wird automatisch laden viele zu einer Beziehung von verknüpften Datensätze mitmachen dieselbe Abfrage und eins zu viele durch separate Abfrage.
, es zu benutzen, einfach neue Konvention registrieren:
.Conventions.Add(new ReferenceConvention())
Könnten Sie bitte einige Beispiele zeigen, wie das benutzen? –
Bitte lesen Sie die aktualisierte Antwort auf, wie man es benutzt. – mdameer
Noch lazy loading passiert. Ich möchte das Lazy Loading vollständig deaktivieren. Meine zugeordneten Eigenschaften sind also null. –