si comportano i dati in cache ...
E Giustamente "preciso giustamente" mi ritrovo i dati anche dopo la delete...
perchè la command agisce su db, di contro LinqToSql gestisce il dato in forma
autonoma.
static void Main(string[] args)
{
PmPlusDataContext pm = new PmPlusDataContext();
pm.Fornitoris.InsertOnSubmit(new Fornitori() {
Indirizzo = "via Dei Dati sporchi",
Ragione_Sociale = "Linq To Sql",
Recapito_Mail = "info@microsoft.com",
Recapito_Mobile = "00 00 000000",
Riferimento = "Gugliemo Cancelli",
Telefono_Sede = "00 000 0000 00" });
// Effettivo inserimento
pm.SubmitChanges();
// senza submit il dato non è fisicamente scritto su db
// di contro questa fallisce
var fx = pm.Fornitoris.First(
f => f.Ragione_Sociale == "Linq To Sql"
);
fx.Risorses.Add(new Risorse() {
Cognome = "Risorsa",
Nome = "Umana 1",
CostoGiorno = 120,
CostoOra = 10,
idAmbitoDefault = 0,
idRisorsa = 1,
idRuoloDefault = 0 });
fx.Risorses.Add(new Risorse(){
Cognome = "Risorsa",
Nome = "Umana 2",
CostoGiorno = 120,
CostoOra = 10,
idAmbitoDefault = 0,
idRisorsa = 1,
idRuoloDefault = 0 });
fx.Risorses.Add(new Risorse() {
Cognome = "Risorsa",
Nome = "Umana 3",
CostoGiorno = 120,
CostoOra = 10,
idAmbitoDefault = 0,
idRisorsa = 1,
idRuoloDefault = 0
});
Console.WriteLine("Risorse prima della commit:" +
pm.Risorses.Count().ToString());
// come per il fornitore solo così salviamo il dato
pm.SubmitChanges();
Console.WriteLine("Risorse dopo la commit:" +
pm.Risorses.Count().ToString());
// flusso alternativo
SqlCommand sc = new
SqlCommand("Delete from Risorse Where idFornitore =" +
fx.idFornitore.ToString());
sc.Connection = new SqlConnection();
sc.Connection.ConnectionString = "[connetcion String]";
sc.Connection.Open();
sc.ExecuteNonQuery();
sc.Connection.Close();
var res = fx.Risorses.ToList();
// e questo dove lo mettiamo ??
foreach (Risorse r in res)
pm.Risorses.DeleteOnSubmit(r);
Console.WriteLine("Risorse dopo la delete:" +
pm.Risorses.Count().ToString());
// sempre peggio
pm.Fornitoris.DeleteOnSubmit(fx);
Console.WriteLine("Risorse dopo la delete di fornitore:" +
pm.Risorses.Count().ToString());
pm.SubmitChanges();
Console.WriteLine("Risorse dopo la commit:" +
pm.Risorses.Count().ToString());
Console.ReadKey();
}
Di contro questa : var res = fx.Risorses.ToList();
mi restituisce 3 record ...
Ma il resto del codice non salta implica tacitamente che l'architettura o trappa l'assenza dei dati o eseguendo "una delete per id" non trovando gli elementi non impazzisce...
Ma manca ancora un test...
e se togliessimo la rimozione logica lasciando solo quella fisica ..
static void Main(string[] args)
{
PmPlusDataContext pm = new PmPlusDataContext();
pm.Fornitoris.InsertOnSubmit(new Fornitori() {
Indirizzo = "via Dei Dati sporchi",
Ragione_Sociale = "Linq To Sql",
Recapito_Mail = "info@microsoft.com",
Recapito_Mobile = "00 00 000000",
Riferimento = "Gugliemo Cancelli",
Telefono_Sede = "00 000 0000 00" });
// Effettivo inserimento
pm.SubmitChanges();
// senza submit il dato non è fisicamente scritto su db
// di contro questa fallisce
var fx = pm.Fornitoris.First(
f => f.Ragione_Sociale == "Linq To Sql"
);
fx.Risorses.Add(new Risorse() {
Cognome = "Risorsa",
Nome = "Umana 1",
CostoGiorno = 120,
CostoOra = 10,
idAmbitoDefault = 0,
idRisorsa = 1,
idRuoloDefault = 0 });
fx.Risorses.Add(new Risorse(){
Cognome = "Risorsa",
Nome = "Umana 2",
CostoGiorno = 120,
CostoOra = 10,
idAmbitoDefault = 0,
idRisorsa = 1,
idRuoloDefault = 0 });
fx.Risorses.Add(new Risorse() {
Cognome = "Risorsa",
Nome = "Umana 3",
CostoGiorno = 120,
CostoOra = 10,
idAmbitoDefault = 0,
idRisorsa = 1,
idRuoloDefault = 0
});
Console.WriteLine("Risorse prima della commit:" +
pm.Risorses.Count().ToString());
// come per il fornitore solo così salviamo il dato
pm.SubmitChanges();
Console.WriteLine("Risorse dopo la commit:" +
pm.Risorses.Count().ToString());
// flusso alternativo
SqlCommand sc = new
SqlCommand("Delete from Risorse Where idFornitore =" +
fx.idFornitore.ToString());
sc.Connection = new SqlConnection();
sc.Connection.ConnectionString = "[connetcion String]";
sc.Connection.Open();
sc.ExecuteNonQuery();
sc.Connection.Close();
// sempre peggio
pm.Fornitoris.DeleteOnSubmit(fx);
Console.WriteLine("Risorse dopo la delete di fornitore:" +
pm.Risorses.Count().ToString());
pm.SubmitChanges();
Console.WriteLine("Risorse dopo la commit:" +
pm.Risorses.Count().ToString());
Console.ReadKey();
}
Funziona e non si spacca !! è un filino sporca .. ma va !
Nessun commento:
Posta un commento