Entity Framework 모델을 사용하여 데이터베이스에 일부 데이터를 삽입하려고하는데 알 수없는 이유로 인해 아무 작업도 수행하지 않습니다.
여기에 뭔가 빠졌나요?
using (var context = new DatabaseEntities())
{
var t = new test
{
ID = Guid.NewGuid(),
name = "blah",
};
context.AddTotest(t);
context.SaveChanges();
}
답변
그것은해야한다:
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();
}
}
답변
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();
해야 할 일
답변
[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();
}
답변
EF6를 사용하고 있는데 이상한 점을 발견했습니다.
Customer에 매개 변수가있는 생성자가 있다고 가정합니다.
내가 사용 new Customer(id, "name")
하고 할 경우
using (var db = new EfContext("name=EfSample"))
{
db.Customers.Add( new Customer(id, "name") );
db.SaveChanges();
}
오류없이 실행되지만 데이터베이스를 살펴보면 실제로 데이터가 삽입되지 않은 것을 알았습니다.
하지만 중괄호, 사용을 추가하는 경우 new Customer(id, "name"){}
와 할
using (var db = new EfContext("name=EfSample"))
{
db.Customers.Add( new Customer(id, "name"){} );
db.SaveChanges();
}
그러면 데이터가 실제로 삽입됩니다.
Curly Brackets가 차이를 만드는 것 같습니다. Curly Brackets를 추가 할 때만 엔티티 프레임 워크가 이것이 실제 구체적인 데이터임을 인식 할 것이라고 생각합니다.