Datentyp für die Speicherung von Dokument in SQL Server 2008 über Entity Framework
Ich versuche zu speichern, ein Dokument in SQL Server 2008 mithilfe des Entity Framework.
Ich glaube, ich habe den code für die dies abgeschlossen. Das problem hab ich jetzt konfrontiert ist, welcher Datentyp zu verwenden, die in SQL Server und in meiner entity-Modell.
'Bild', war meine erste Wahl, aber dies bewirkt, dass ein "Ungültiges mapping" - Fehler, wenn ich ein update für das Modell. Ich sehe, dass es gibt keine Entsprechung von 'Bild' (going durch die Art drop-down in die Eigenschaften der Entität).
So, ich hab dann versucht, 'varbinary(MAX)' und ich sehe, dass diese Karten auf 'binary' in der entity-Modell. Allerdings, wenn ich den code ausführen, es sagt mir, dass die Daten abgeschnitten, so hörte es auf. Bei der Untersuchung sehe ich, dass die SQL Server-Datentyp 'binary', ist 8000 bytes lang ist - deshalb habe ich 'varbinary(MAX)' - so das entity-Modell zu sein scheint, die Reduzierung/mapping 'varbinary(MAX)' auf 'binary'.
Ist das richtig?
Wenn ja, was sollte mein Datentypen werden (in SQL Server 2008 und in meiner Entität-Modell), bitte? Irgendwelche Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie den Datentyp des Modells zu byte [], und es wird alles in Ordnung sein Kumpel, wenn Sie brauchen mehr Erklärungen bitte hinterlassen Sie einen Kommentar.
EDIT:
Dude, ich hatte versucht, es vor, in Linq to Sql und dieses mal habe ich versucht, es in EF, im konzeptionellen Modell werden nämlich Foo.edmx-Datei wird Ihr Typ Binary(Sie können es öffnen durch öffnen mit " Kontext-Menü von Visual Studio und wählen Sie dann Xml-Editor oder einem anderen text-editor wie notepad), sondern in einer generierten Datei namens Foo.designer.cs Ihre Daten-Typ Byte[].
Und es ist nicht eine Grenze, die Sie bereits erwähnt.
Ich versuchte es mit einem 10000 bytes und es wird erfolgreich eingesetzt, ohne abschneiden meinem array. Über ein benchmarking auf speichern von Dokumenten in der Datenbank oder im Dateisystem habe ich einen Artikel gelesen, der sagte, dass in Sql Server 7, Datei-system eine bessere Leistung auf abgelegte Daten, sondern in späteren Versionen von Sql Server, nehmen Sie über die Datei-system-Geschwindigkeit und es schlug das speichern von Dokumenten auf Sql Server.
IMHO auf speichern von Dokumenten, wenn Sie nicht zu groß sind, ich bevorzuge, um Sie zu speichern in DB (NoSql DBs hat große Leistung, die hier, soweit ich weiß),
Zuerst: Integrität meiner Daten,
Zweiten: Mehr Leistung, die Sie haben können(Ursache, wenn Sie Ihre Ordner hat, große Anzahl von Dateien, Lesen und schreiben von Dateien in diesen Ordner verlangsamt sich allmählich mehr und mehr, es sei denn, Sie organisieren, Sie in mehr als einem Ordner und vorzugsweise in einem Baum-wie Ordner),
Dritte: Security-Richtlinien, die Sie möglicherweise anwenden, um Sie durch die Anwendung einfacher(obwohl dies können Sie über Datei-system-Ansatz, aber ich denke es ist einfacher hier)
Viertens: profitieren Sie von Einrichtungen durch DBMS für Abfragen und Bearbeiten und ... die Dateien
... und noch viel mehr 🙂
Idealerweise sollten Sie nicht die Speicherung von Dokumenten in der Datenbank, anstatt speichern Sie die Pfad zu dem Dokument in der Datenbank, die dann auf dem physischen Dokument auf dem web-server selbst (oder einen anderen storage, CDN, etc.).
Allerdings, wenn Sie speichern müssen Sie im SQL Server - (und zu sehen, als ob Ihr auf SQL 2008),
Sie sollten mit FILESTREAM.
Und es wird unterstützt vom EF4 (glaube ich). Es maps zu binäre.
Als ich sagte, obwohl, ich bin mir nicht sicher, wie gut dies funktionieren wird, laufen einige benchmarks - und wenn es nicht so gut geht, versuchen Sie es mit regelmäßigen ADO.NET/FileStream API.
Ich denke immer noch, sollten Sie legen Sie es auf das Dateisystem, nicht in der Datenbank (meiner Meinung nach natürlich)