Ich habe ein varbinary (max) -Feld in einer meiner Tabellen, aber ich brauche es nicht jedes Mal und ich suche nach einer Möglichkeit, es nur bei Bedarf aus der Datenbank zu holen. Ich verwende ADO.NET Entity Framework. Wie geht das?Wie Varbinary (max) Felder nur bei Bedarf mit ADO.NET Entity Framework geladen werden?
Antwort
Die Lösung war eine separate Tabelle mit dem varbinary Feld zu erzeugen und 1-zu-1-Beziehung macht zwischen den Tischen
Eine Möglichkeit wäre Ihr Ergebnis in einen anonymen Typen auf Projekt, wenn Sie den Blob nicht brauchen:
from entity in context.Entities
select new
{
Field1 = entity.Field1,
Field2 = entity.Field2
}
In diesem Beispiel nur Field1 und Field2 geladen.
Diese Methode hat den Nachteil, dass Sie die zurückgegebene Instanz nicht aktualisieren und context.SaveChanges ausführen können. Obwohl ich argumentieren würde, dass das Speichern einer Instanz ohne vollständige Kenntnis der Instanz grenzwertig unsicher ist. Diese Methode ist gut, wenn Sie eine lange Liste der Instanzen zurückgeben möchten, aber vor einer tatsächlichen Aktualisierung nach einer einzelnen Instanz, dem varbinary-Feld und allen, suchen.
Vielen Dank für Ihre Unterstützung. Ich war auf der Suche nach etwas, das dem Lazy Loading des varbinären Feldes ähnlich ist :) aber es scheint, dass dies nicht möglich ist. – Emil
Es ist nicht unbedingt separate Tabelle zu erstellen. Sie sollten mehrere Schritte ausführen. Nehmen wir an, wir haben die Tabelle 'Dokumente' (ID, Name, Daten (varbinary)).
- Öffnen Sie EF-Designer, kopieren Sie die Entität 'Dokument' und fügen Sie sie ein.
- Benennen Sie es in "DocumentData" um. Fügen Sie die Zuordnung zur Tabelle "Dokumente" hinzu.
- Löschen der Eigenschaft 'Data' in der Entität 'Document'.
- Löschen Sie die Eigenschaft 'Name' in der Entität 'DocumentData'.
- Klicken Sie mit der rechten Maustaste auf 'DocumentData' und fügen Sie eine neue Assoziation hinzu. Wählen Sie eine Eins-zu-eins-Verknüpfung mit der Entität "Dokument".
- Wählen Sie eine neue Verknüpfung aus, gehen Sie zu Eigenschaften, klicken Sie auf '...' im Feld 'Referentielle Abhängigkeit', wählen Sie 'Dokument' als Prinzipal, lassen Sie alle als Standard (Id -> Id) und klicken Sie auf OK.
Jetzt das Projekt erstellen.
HINWEIS. Nun, wenn neue ‚Dokument‘ Einheit zu schaffen, sollten Sie auch neue ‚Dokumentdaten‘ Entität erstellen, auch wenn Sie noch keine Daten platzieren wollen:
Document doc = new Document();
doc.Name = "My document";
doc.DocumentData = new DocumentData();
context.Documents.Add(doc);
context.SaveChanges();
Tabelle Spaltung. Entity Developer Werkzeug ermöglicht dies visuell durchzuführen. Sie können Ihre Entität verschiedenen Tabellen zuordnen.
Sie sollten Ihr varbinary-Feld aus der Tabelle entfernen und in eine andere Tabelle einfügen, um eine Eins-zu-Eins-Beziehung zwischen diesen zu erstellen. Dies ist eine gute Übung, weil Sie einfach lazy loading und andere Sachen implementieren können.
- 1. Entity-Framework und VARBINARY
- 2. Entity Framework-Referenzen werden nicht automatisch geladen
- 3. ADO.NET Entity Framework-Lernprogramme
- 4. ADO.Net Entity Framework Beziehungen
- 5. ADO.Net Entity Framework/Linq
- 6. Parallelität in ADO.NET Entity Framework
- 7. ADO.Net Entity Framework Objektnavigation?
- 8. Stored Procedure MVC3 Entity Framework - Varbinary
- 9. Entity Framework Update Entity zusammen mit untergeordneten Entitäten (hinzufügen/aktualisieren bei Bedarf)
- 10. ADO.NET Entity Framework- und Identitätsspalten
- 11. ADO.NET Entity Framework vs NHibernate
- 12. Entity-Listener für ADO.NET Entity Framework
- 13. ado.net Entity Framework löschen Zeilen
- 14. Kann das Repository-Muster nur mit Entity Framework verwendet werden?
- 15. Interne Klassen mit ADO.NET Entity Framework
- 16. Ado.net Entity Framework Debug-Visualisierer
- 17. SaveChanges funktioniert nicht mit ADO.NET Entity Framework
- 18. Web-API mit Entity-Framework oder ado.net
- 19. Max Pool-Größe mit Entity Framework 4.3
- 20. Unterstützt das ADO.NET Entity Framework Compact Framework
- 21. Wie sollte ich mit dem ADO.NET Entity Framework beginnen?
- 22. Objekt nur bei Bedarf laden
- 23. Fehlerbehebung ADO.NET Entity Framework und 1: * Beziehungen
- 24. Wie verwenden Sie Hiarchy-Datentyp mit ADO.NET Entity Framework?
- 25. Wie erweitere ich ADO.NET Entity Framework-Objekte mit Teilklassen?
- 26. NHibernate: Shop VARBINARY MAX
- 27. ADO.Net Entity Framework: Was ist das?
- 28. Ado.Net Entity Framework, Linq: select Multiples Tabellen
- 29. ADO.NET Entity Framework ObjectContext - Caching Frage
- 30. Wie lade ich ordnungsgemäß Objektreferenzen mit ADO.net Entity Framework
Nicht immer möglich auf einem vorhandenen Schema, aber wahrscheinlich der einfachste Ansatz, wenn es möglich ist. Ich habe es getan, mit einem Fremdschlüssel zu "sekundären" Tabelle in meiner "Haupttabelle", prüfen, ob FK ist Null oder nicht erlaubt, schnell zu wissen, ob oder nicht, wenn ein "sekundärer" Datensatz existiert, ohne es tatsächlich laden zu müssen. – AFract