Вставка данных с использованием модели Entity Framework
Я пытаюсь вставить некоторые данные в свою базу данных с помощью модели Entity Framework, но по каким-то неизвестным причинам я ничего не делаю.
Я что-то пропустил?
using (var context = new DatabaseEntities())
{
var t = new test
{
ID = Guid.NewGuid(),
name = "blah",
};
context.AddTotest(t);
context.SaveChanges();
}
Ответы
Ответ 1
Это должно быть:
context.TableName.AddObject(TableEntityInstance);
Где:
-
TableName
: имя таблицы в базе данных.
-
TableEntityInstance
: экземпляр класса сущности таблицы.
Если ваша таблица Orders
, то:
Order order = new Order();
context.Orders.AddObject(order);
Например:
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();
}
Вот живой пример:
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();
}
}
Ответ 2
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();
Должно это сделать
Ответ 3
[HttpPost]//используется при написании логики при событии нажатия кнопки
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();
}
Ответ 4
Я использую EF6, и я нахожу что-то странное,
Предположим, что у Клиента есть конструктор с параметром,
если я использую new Customer(id, "name")
и делаю
using (var db = new EfContext("name=EfSample"))
{
db.Customers.Add( new Customer(id, "name") );
db.SaveChanges();
}
Он работает без ошибок, но когда я смотрю в базу данных, я нахожу, что данные НЕ Вставляются,
Но если я добавлю фигурные скобки, используйте new Customer(id, "name"){}
и do
using (var db = new EfContext("name=EfSample"))
{
db.Customers.Add( new Customer(id, "name"){} );
db.SaveChanges();
}
тогда данные будут фактически вставлены,
кажется, что Curly Brackets имеют значение, я думаю, что только при добавлении Curly Brackets структура сущностей распознает, что это реальные конкретные данные.