반응형
Entity Framework 모델을 사용하여 데이터 삽입
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();
}
그러면 데이터가 실제로 삽입됩니다.
seems the Curly Brackets make the difference, I guess that only when add Curly Brackets, entity framework will recognize this is a real concrete data.
참고URL : https://stackoverflow.com/questions/8835434/insert-data-using-entity-framework-model
반응형
'Programing' 카테고리의 다른 글
경로 이름에 공백이있는 디렉토리로 cd 할 Bash 스크립트 (0) | 2020.09.21 |
---|---|
명령에 git 기본 플래그 설정 (0) | 2020.09.21 |
Android Studio에서 모든 TODO 작업을 보는 방법은 무엇입니까? (0) | 2020.09.21 |
Visual Studio 2015는 매우 느립니다. (0) | 2020.09.20 |
Windows Vista에서 '디버그 / 응용 프로그램 닫기'대화 상자를 비활성화하려면 어떻게합니까? (0) | 2020.09.20 |