Próbuję wstawić dane do mojej bazy danych za pomocą modelu Entity Framework, ale z nieznanych mi powodów nic to nie robi.
Czy coś mi umyka?
using (var context = new DatabaseEntities())
{
var t = new test
{
ID = Guid.NewGuid(),
name = "blah",
};
context.AddTotest(t);
context.SaveChanges();
}
c#
.net
entity-framework
Rocshy
źródło
źródło
Odpowiedzi:
Powinno być:
Gdzie:
TableName
: nazwa tabeli w bazie danych.TableEntityInstance
: instancja klasy jednostki tabeli.Jeśli Twój stół jest
Orders
, to:Order order = new Order(); context.Orders.AddObject(order);
Na przykład:
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(); }
Oto przykład na żywo:
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(); } }
źródło
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();
Powinienem to zrobić
źródło
[HttpPost] // używany podczas zapisywania logiki w przypadku kliknięcia przycisku
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(); }
źródło
Używam EF6 i znajduję coś dziwnego,
Załóżmy, że Klient ma konstruktora z parametrem,
jeśli używam
new Customer(id, "name")
i robięusing (var db = new EfContext("name=EfSample")) { db.Customers.Add( new Customer(id, "name") ); db.SaveChanges(); }
Działa bezbłędnie, ale kiedy zaglądam do bazy danych, okazuje się, że dane NIE SĄ wstawiane,
Ale jeśli dodam nawiasy klamrowe, użyj
new Customer(id, "name"){}
i zróbusing (var db = new EfContext("name=EfSample")) { db.Customers.Add( new Customer(id, "name"){} ); db.SaveChanges(); }
dane zostaną wtedy faktycznie wprowadzone,
wydaje się, że nawiasy klamrowe robią różnicę, myślę, że tylko po dodaniu nawiasów klamrowych struktura encji rozpozna, że są to prawdziwe konkretne dane.
źródło