Tout fonctionnait bien jusqu'à ce que j'essaie une simple mise à jour de SQL Server de Linq. Mon code est:Linq Mise à jour de SQL
DataClasses1DataContext db = new DataClasses1DataContext("mySQLServer");
db.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["mySQLServer"].ToString();
var results = (from bl in db.a_Bellows_Lots
where bl.Job == this.theJob
where bl.BellowsLot == this.theLot
select bl).SingleOrDefault();
results.Quantity = this.theQuantity;
try
{
db.SubmitChanges();
}
catch (Exception ex)
{
error += " " + ex.Message;
Mais la valeur ne change pas. J'ai modélisé ceci dans LinqPad avec ceci;
string JobNumber = "A2559038A";
string LotNumber = "17213A";
var results = (from bl in a_Bellows_Lots
where bl.Job == JobNumber
where bl.BellowsLot == LotNumber
select new
{
bl.Quantity
}).SingleOrDefault();
results.Quantity = 1;
this.SubmitChanges();
Cela me donne une erreur de temps de conception de « Propery ou indexeur « AnonymousType # 1.Quantity » ne peut pas être attribué à - il est en lecture seule. »
Je l'ai utilisé ce modèle de conception avant et il fonctionne:
DataClasses1DataContext db = new DataClasses1DataContext("mySQLServer");
db.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["mySQLServer"].ToString();
var results = (from x in db.a_Cleaning_Logs
where x.CleaningLogID == CleaningLogID
select x).SingleOrDefault();
results.EndTime = EndDate;
results.EmployeeOut = employeeOut;
results.CleaningDone = cleaningDone;
db.SubmitChanges();
Quelle est la différence; Qu'est-ce que je fais mal?
Quelle est la vraie question? L'exception donnée pour le milieu explique bien le problème là. Demandez-vous pourquoi la partie supérieure ne change pas la base de données? –
La seconde va définitivement échouer parce que vous lancez le résultat de la base de données comme un type anonyme. Le premier ressemble à ça devrait marcher. Que se passe-t-il lorsque vous codez la valeur à changer? Est-il possible que vous le «changiez» réellement à la même valeur? – Jonathan
La quantité était 3 et j'ai changé le code pour être "results.Quantity = 123;" et la valeur n'a pas changé. Donc, je sais que j'essaye de le changer à une valeur différente. –