J'essaie d'insérer des données dans ma base de données à l'aide du modèle Entity Framework, mais pour des raisons inconnues, cela ne fait rien.
Est-ce que j'ai râté quelque chose?
using (var context = new DatabaseEntities())
{
var t = new test
{
ID = Guid.NewGuid(),
name = "blah",
};
context.AddTotest(t);
context.SaveChanges();
}
CA devrait etre:
context.TableName.AddObject(TableEntityInstance);
Où:
TableName
: le nom de la table dans la base de données.TableEntityInstance
: une instance de la classe d'entité de table.Si votre table est Orders
, alors:
Order order = new Order();
context.Orders.AddObject(order);
Par exemple:
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();
}
Voici un exemple en direct:
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();
}
}
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();
Devrait le faire
[HttpPost] // il utilise lorsque vous écrivez de la logique sur un événement de clic de bouton
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();
}
J'utilise EF6 et je trouve quelque chose d'étrange,
Supposons que le client ait un constructeur avec le paramètre,
si j'utilise new Customer(id, "name")
, et fais
using (var db = new EfContext("name=EfSample"))
{
db.Customers.Add( new Customer(id, "name") );
db.SaveChanges();
}
Il fonctionne sans erreur, mais lorsque je regarde dans la base de données, je constate en fait que les données ne sont PAS insérées,
Mais si j'ajoute les accolades, utilisez new Customer(id, "name"){}
et faites
using (var db = new EfContext("name=EfSample"))
{
db.Customers.Add( new Customer(id, "name"){} );
db.SaveChanges();
}
les données seront alors effectivement insérées,
semble que les crochets font la différence, je suppose que ce n’est que lorsque les crochets seront ajoutés que le cadre des entités reconnaîtra que c’est une donnée concrète.