/ / Come rendere associabili le proprietà personalizzate della classe Linq2SQL? - c #, winforms, linq-to-sql, associazione dati

Come rendere associabili le proprietà personalizzate della classe Linq2SQL? - c #, winforms, linq-to-sql, associazione dati

Il mio database ha una tabella Foo con la proprietàÈ vero. Ho creato una classe Linq2SQL "myData.dbml" per questo database e ho aggiunto la classe Foo generata alla barra delle mie origini dati. Ho una semplice finestra di Winforms con un ToggleButton che dovrebbe legarsi all'inverso di IsTrue.

Per raggiungere questo obiettivo, ho provato ad aggiungere la proprietà NotTrue a myData.dbml, ma ciò ha causato un SQLException, nome di riga non valido "NotTrue". Ho provato ad aggiungere il codice proprietà a myData.cs in questo modo:

public bool NotTrue {
get {
return !this._IsTrue;
}
set {
if (this._IsTrue == value) {
this.OnIsTrueChanging(!value);
this.SendPropertyChanging();
this._IsTrue = !value;
this.SendPropertyChanged("IsTrue");
this.SendPropertyChanged("NotTrue");
this.OnIsTrueChanged();
}
}
}

Ma poi la proprietà non appariva quando si aggiungeva Foo alle origini dati anche quando si aggiungeva [Bindable(true)]

Ciò che ha funzionato, è stato vincolante per IsTrue e ha negato il Binding con questo:

private void InvertBoolBinding(ControlBindingsCollection collection,string property) {
foreach (Binding b in collection) {
if (b.PropertyName.Equals(property)) {
ConvertEventHandler invert = new ConvertEventHandler((sender, e) => { e.Value = !((bool)e.Value); });
b.Format += invert;
b.Parse += invert;
}
}
}

Chiamato in questo modo:

InvertBoolBinding(lockToggleButton.DataBindings, "IsChecked");

Sebbene nel mio progetto principale ci sia una quantità enormedi questi attacchi, questo approccio è piuttosto una seccatura. Sembra che Datasources non sia in grado di connettere proprietà tramite classi parziali. Quando aggiungo la proprietà a myData.designer.cs, viene rilevato. Ma questa classe viene rigenerata regolarmente e la mia proprietà viene persa.

Quindi forse ho bisogno di un approccio completamente diverso o forse c'è un modo per far funzionare le estensioni di classe parziali. Spero che tu abbia qualche idea su questo. Grazie!

risposte:

0 per risposta № 1

Spostando la classe Linq2SQL in un assembly diverso, Visual Studio risolve la connessione parziale.

Trovato Qui.