Estoy tratando de insertar algunos datos en mi base de datos usando el modelo Entity Framework, pero por algunas razones desconocidas para mí, no hace nada.
¿Me estoy perdiendo de algo?
using (var context = new DatabaseEntities())
{
var t = new test
{
ID = Guid.NewGuid(),
name = "blah",
};
context.AddTotest(t);
context.SaveChanges();
}
c#
.net
entity-framework
Rocshy
fuente
fuente
Respuestas:
Debería ser:
Dónde:
TableName
: el nombre de la tabla en la base de datos.TableEntityInstance
: una instancia de la clase de entidad de tabla.Si su mesa es
Orders
, entonces:Order order = new Order(); context.Orders.AddObject(order);
Por ejemplo:
var id = Guid.NewGuid(); // insert using (var db = new EfContext("name=EfSample")) { var customers = db.Set<Customer>(); customers.Add( new Customer { CustomerId = id, Name = "John Doe" } ); db.SaveChanges(); }
Aquí hay un ejemplo en vivo:
public void UpdatePlayerScreen(byte[] imageBytes, string installationKey) { var player = (from p in this.ObjectContext.Players where p.InstallationKey == installationKey select p).FirstOrDefault(); var current = (from d in this.ObjectContext.Screenshots where d.PlayerID == player.ID select d).FirstOrDefault(); if (current != null) { current.Screen = imageBytes; current.Refreshed = DateTime.Now; this.ObjectContext.SaveChanges(); } else { Screenshot screenshot = new Screenshot(); screenshot.ID = Guid.NewGuid(); screenshot.Interval = 1000; screenshot.IsTurnedOn = true; screenshot.PlayerID = player.ID; screenshot.Refreshed = DateTime.Now; screenshot.Screen = imageBytes; this.ObjectContext.Screenshots.AddObject(screenshot); this.ObjectContext.SaveChanges(); } }
fuente
var context = new DatabaseEntities(); var t = new test //Make sure you have a table called test in DB { ID = Guid.NewGuid(), name = "blah", }; context.test.Add(t); context.SaveChanges();
Deberías hacerlo
fuente
[HttpPost] // se usa cuando escribe lógica en el evento de clic de botón
public ActionResult DemoInsert(EmployeeModel emp) { Employee emptbl = new Employee(); // make object of table emptbl.EmpName = emp.EmpName; emptbl.EmpAddress = emp.EmpAddress; // add if any field you want insert dbc.Employees.Add(emptbl); // pass the table object dbc.SaveChanges(); return View(); }
fuente
Estoy usando EF6 y encuentro algo extraño,
Supongamos que el cliente tiene un constructor con parámetro,
si lo uso
new Customer(id, "name")
y lo hagousing (var db = new EfContext("name=EfSample")) { db.Customers.Add( new Customer(id, "name") ); db.SaveChanges(); }
Se ejecuta sin errores, pero cuando miro en la base de datos, encuentro de hecho que los datos NO se insertan,
Pero si agrego las llaves, use
new Customer(id, "name"){}
y hagausing (var db = new EfContext("name=EfSample")) { db.Customers.Add( new Customer(id, "name"){} ); db.SaveChanges(); }
entonces los datos se insertarán realmente,
Parece que los Curly Brackets marcan la diferencia, supongo que solo cuando agregue Curly Brackets, el marco de la entidad reconocerá que se trata de un dato concreto real.
fuente