Diff
checker
Text
Text
Bilder
Dokumente
Excel
Ordner
Legal
Enterprise
Desktop-App
Preise
Einloggen
Diffchecker Desktop herunterladen
Texte vergleichen
Finde den Unterschied zwischen zwei Textdateien
Werkzeuge
Verlauf
Live-Editor
Gleiches ausblenden
Zeilenumbruch aus
Ansicht
Zweispaltig
Einspaltig
Vergleichsgenauigkeit
Intelligent
Wort
Zeichen
Syntaxhervorhebung
Syntax auswählen
Ignorieren
Text umwandeln
Zur ersten Änderung
Eingabe bearbeiten
Diffchecker Desktop
Der sicherste Weg, Diffchecker zu nutzen. Hol dir die Desktop-App: Deine Diffs verlassen nie deinen Computer!
Desktop holen
Untitled diff
Erstellt
vor 9 Jahren
Diff läuft nie ab
Löschen
Exportieren
Teilen
Erklären
16 Entfernungen
Zeilen
Gesamt
Entfernt
Zeichen
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
70 Zeilen
Kopieren
53 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Zeichen
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
99 Zeilen
Kopieren
#include <iostream>
#include <iostream>
#include <memory>
#include <memory>
#include <Wt/Dbo/Dbo.h>
#include <Wt/Dbo/Dbo.h>
#include <Wt/Dbo/backend/Sqlite3.h>
#include <Wt/Dbo/backend/Sqlite3.h>
using namespace std;
using namespace std;
namespace dbo = Wt::Dbo;
namespace dbo = Wt::Dbo;
class EntityA
class EntityA
{
{
public:
public:
string name {"Jef"};
string name {"Jef"};
template<class Action>
template<class Action>
void persist(Action& a)
void persist(Action& a)
{
{
dbo::field(a, name, "name");
dbo::field(a, name, "name");
}
}
};
};
class EntityB
class EntityB
{
{
public:
public:
string name {"Jef Jr."};
string name {"Jef Jr."};
Kopieren
Kopiert
Kopieren
Kopiert
dbo::
ptr<EntityA> parent;
static shared_ptr<
dbo::
Session> session;
static void setSession(shared_ptr<dbo::Session> s)
{
session = s;
}
template<class Action>
template<class Action>
void persist(Action& a)
void persist(Action& a)
{
{
dbo::field(a, name, "name");
dbo::field(a, name, "name");
dbo::belongsTo(a, parent, "parent");
dbo::belongsTo(a, parent, "parent");
}
}
Kopieren
Kopiert
Kopieren
Kopiert
unique_ptr<EntityA> getParent() const
{
dbo::Transaction t{*session};
return make_unique<EntityA>(*parent);
}
void setParent(dbo::ptr<EntityA> p)
{
parent = p;
}
void setParent(unique_ptr<EntityA> p)
{
parent.reset(move(p));
}
private:
dbo::ptr<EntityA> parent {nullptr};
};
};
Kopieren
Kopiert
Kopieren
Kopiert
dbo::ptr<EntityB> getAnyB(
dbo::Session
&
session)
shared_ptr<dbo::Session> EntityB::session = nullptr;
dbo::ptr<EntityB> getAnyB(
shared_ptr<
dbo::Session
>
session)
{
{
Kopieren
Kopiert
Kopieren
Kopiert
dbo::Transaction t{
session};
dbo::Transaction t{
*
session};
Kopieren
Kopiert
Kopieren
Kopiert
return session
.
find<EntityB>().limit(1);
return session
->
find<EntityB>().limit(1);
}
}
int main()
int main()
{
{
Kopieren
Kopiert
Kopieren
Kopiert
dbo::Session
session
;
auto session = make_shared<
dbo::Session
>()
;
Kopieren
Kopiert
Kopieren
Kopiert
session
.
setConnection([](){
session
->
setConnection([](){
auto sqlite3 = make_unique<dbo::backend::Sqlite3>(":memory:");
auto sqlite3 = make_unique<dbo::backend::Sqlite3>(":memory:");
sqlite3->setProperty("show-queries", "true");
sqlite3->setProperty("show-queries", "true");
return move(sqlite3);
return move(sqlite3);
}());
}());
Kopieren
Kopiert
Kopieren
Kopiert
session
.
mapClass<EntityA>("entity_a");
session
->
mapClass<EntityA>("entity_a");
session
.
mapClass<EntityB>("entity_b");
session
->
mapClass<EntityB>("entity_b");
Kopieren
Kopiert
Kopieren
Kopiert
session
.
createTables();
session
->
createTables();
EntityB::setSession(session);
{
{
Kopieren
Kopiert
Kopieren
Kopiert
dbo::Transaction t{
session};
dbo::Transaction t{
*
session};
auto b = make_unique<EntityB>();
auto b = make_unique<EntityB>();
Kopieren
Kopiert
Kopieren
Kopiert
b->
p
arent
=
session
.
add(make_unique<EntityA>())
;
b->
setP
arent
(
session
.
add(move(b));
session
->
add(make_unique<EntityA>())
)
;
session
->
add(move(b));
}
}
Kopieren
Kopiert
Kopieren
Kopiert
//dbo::Transaction t{session}; // This "fixes" the problem, but it's VERY inconvenient
cout << getAnyB(session)->
getP
arent
()
->name;
cout << getAnyB(session)->
p
arent
->name;
// Exception: Dbo load(): no active transaction
return 0;
return 0;
}
}
Gespeicherte Diffs
Originaltext
Datei öffnen
#include <iostream> #include <memory> #include <Wt/Dbo/Dbo.h> #include <Wt/Dbo/backend/Sqlite3.h> using namespace std; namespace dbo = Wt::Dbo; class EntityA { public: string name {"Jef"}; template<class Action> void persist(Action& a) { dbo::field(a, name, "name"); } }; class EntityB { public: string name {"Jef Jr."}; dbo::ptr<EntityA> parent; template<class Action> void persist(Action& a) { dbo::field(a, name, "name"); dbo::belongsTo(a, parent, "parent"); } }; dbo::ptr<EntityB> getAnyB(dbo::Session& session) { dbo::Transaction t{session}; return session.find<EntityB>().limit(1); } int main() { dbo::Session session; session.setConnection([](){ auto sqlite3 = make_unique<dbo::backend::Sqlite3>(":memory:"); sqlite3->setProperty("show-queries", "true"); return move(sqlite3); }()); session.mapClass<EntityA>("entity_a"); session.mapClass<EntityB>("entity_b"); session.createTables(); { dbo::Transaction t{session}; auto b = make_unique<EntityB>(); b->parent = session.add(make_unique<EntityA>()); session.add(move(b)); } //dbo::Transaction t{session}; // This "fixes" the problem, but it's VERY inconvenient cout << getAnyB(session)->parent->name; // Exception: Dbo load(): no active transaction return 0; }
Bearbeitung
Datei öffnen
#include <iostream> #include <memory> #include <Wt/Dbo/Dbo.h> #include <Wt/Dbo/backend/Sqlite3.h> using namespace std; namespace dbo = Wt::Dbo; class EntityA { public: string name {"Jef"}; template<class Action> void persist(Action& a) { dbo::field(a, name, "name"); } }; class EntityB { public: string name {"Jef Jr."}; static shared_ptr<dbo::Session> session; static void setSession(shared_ptr<dbo::Session> s) { session = s; } template<class Action> void persist(Action& a) { dbo::field(a, name, "name"); dbo::belongsTo(a, parent, "parent"); } unique_ptr<EntityA> getParent() const { dbo::Transaction t{*session}; return make_unique<EntityA>(*parent); } void setParent(dbo::ptr<EntityA> p) { parent = p; } void setParent(unique_ptr<EntityA> p) { parent.reset(move(p)); } private: dbo::ptr<EntityA> parent {nullptr}; }; shared_ptr<dbo::Session> EntityB::session = nullptr; dbo::ptr<EntityB> getAnyB(shared_ptr<dbo::Session> session) { dbo::Transaction t{*session}; return session->find<EntityB>().limit(1); } int main() { auto session = make_shared<dbo::Session>(); session->setConnection([](){ auto sqlite3 = make_unique<dbo::backend::Sqlite3>(":memory:"); sqlite3->setProperty("show-queries", "true"); return move(sqlite3); }()); session->mapClass<EntityA>("entity_a"); session->mapClass<EntityB>("entity_b"); session->createTables(); EntityB::setSession(session); { dbo::Transaction t{*session}; auto b = make_unique<EntityB>(); b->setParent( session->add(make_unique<EntityA>()) ); session->add(move(b)); } cout << getAnyB(session)->getParent()->name; return 0; }
Unterschied finden