Hej, Kolla på Entity Framework (eller nåt annat liknande OR-ramverk)! Tack Tomas.Insert / Update
Jag vill spara / uppdatera poster i en tabell ( flera tabeller).
Följande fungerar men kan ju inte vara guds mening ???
Det är ett antal textboxar som ska sparas / uppdateras i tabellen.
Mycket kod för lite jobb...
Parameter in = this (en form)
Bättre förslag ?
public void InsertItem(frmItemDetails _that)
{
conItem = new SqlCeConnection();
conItem.ConnectionString = conStr;
conItem.Open();
SqlCeCommand cmd = new SqlCeCommand(@"INSERT INTO ItemTable (ItemId, ItemName, ExternalItemId, DrawingNo, Materials, Color, Length, Depth,Width,
Weight, Packing, NumInPack, PackWeight, PackLength, PackDepth, PackWidth, Notes, StockLoc, InStock, InReservation)
VALUES(@ItemId, @ItemName, @ExternalItemId, @DrawingNo, @Materials, @Color, @Length, @Depth, @Width,
@Weight, @Packing, @NumInPack, @PackWeight, @PackLength, @PackDepth, @PackWidth, @Notes, @StockLoc, @InStock,@InReservation)", conItem);
cmd.Parameters.AddWithValue("@ItemId", _that.tbItemId.Text);
cmd.Parameters.AddWithValue("@ItemName", _that.tbItemName.Text);
cmd.Parameters.AddWithValue("@ExternalItemId", _that.tbExternalItemId.Text);
cmd.Parameters.AddWithValue("@DrawingNo", _that.tbDrawingNo.Text);
cmd.Parameters.AddWithValue("@Materials", _that.tbMaterials.Text);
cmd.Parameters.AddWithValue("@Color", _that.tbColor.Text);
cmd.Parameters.AddWithValue("@Length",_that.tbLength.Text);
cmd.Parameters.AddWithValue("@Depth", _that.tbDepth.Text);
cmd.Parameters.AddWithValue("@Width", _that.tbWidth.Text);
cmd.Parameters.AddWithValue("@Weight", _that.tbWeight.Text);
cmd.Parameters.AddWithValue("@Packing" ,_that.tbPacking.Text);
cmd.Parameters.AddWithValue("@NumInPack", _that.tbNumInPack.Text);
cmd.Parameters.AddWithValue("@PackWeight", _that.tbPackWidth.Text);
cmd.Parameters.AddWithValue("@PackLength", _that.tbPackLength.Text);
cmd.Parameters.AddWithValue("@PackDepth", _that.tbPackDepth.Text);
cmd.Parameters.AddWithValue("@PackWidth", _that.tbPackWidth.Text);
cmd.Parameters.AddWithValue("@Notes", _that.tbNotes.Text);
cmd.Parameters.AddWithValue("@StockLoc", _that.tbStockLoc.Text);
cmd.Parameters.AddWithValue("@InStock", _that.tbInStock.Text);
cmd.Parameters.AddWithValue("@InReservation", _that.tbInReservation.Text);
cmd.ExecuteNonQuery();
conItem.Close();
}
}
Sv: Insert / Update
http://msdn.microsoft.com/en-us/data/ef.aspx
Då kan du få nåt i stil med:
public void SaveItem(Item item)
{
using (var db = new ItemContext())
{
if (item.ItemId != 0) // Update existing
{
db.Items.Attach(item);
db.ObjectStateManager.ChangeObjectState(item, EntityState.Modified);
}
else // Insert new
{
db.Items.AddObject(item);
}
db.SaveChanges();
}
}
I slutänden blir det såklart i stort sett samma SQL som i ditt exempel, men du slipper pilla ihop den själv eftersom EF gör det åt dig.
Sv:Insert / Update
Jag misstänkte att det fanns något för att minska kodandet.
Detta ska jag titta mer på.
/Martin