2012-01-12 4 views
54

Entity Framework 모델을 사용하여 데이터베이스에 일부 데이터를 삽입하려고하지만 일부 알 수없는 이유로이 작업을 수행하지 않습니다.Entity Framework 모델을 사용하여 데이터 삽입

여기에 뭔가가 있습니까?

using (var context = new DatabaseEntities()) 
{ 
    var t = new test 
    { 
     ID = Guid.NewGuid(), 
     name = "blah", 
    }; 
    context.AddTotest(t); 
    context.SaveChanges(); 
} 
+0

'SaveChanges (System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave); 시도해보십시오.' – Willem

+5

코드 우선? 첫 번째 모델? 깨지거나 아무것도 보관하지 않습니까? SQL 프로파일 러는 무엇을 말합니까? 데이터베이스에 보내지는 것이 있습니까? –

답변

69

그것은해야한다 :

context.TableName.AddObject(TableEntityInstance); 

장소 :

  1. TableName

    : 데이터베이스에있는 테이블의 이름.
  2. 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(); 
    } 
} 
+0

AddObject 메서드가 없습니다. – Rocshy

+0

@Dennis Traub이 (가) 모델에 대해 질문했습니다. 그것에 대한 자세한 정보를 제공해주십시오. –

+0

깨지지 않습니다. 아무것도 저장하지 않습니다. 내 테이블의 내용을 나열하는 데 문제가 없습니다. 죄송합니다. 저는이 기능이 처음입니다. SQL 프로파일 러를 사용하지 않습니다. 내 모델에는 2 개의 열이있는 테이블 하나가 있습니다. – Rocshy

23
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(); 

쇼 자민련은

+0

완벽 하군, 고마워! – taiar

4

당신은 내가 EF6을 사용하고

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(); 
} 
+0

질문이있는 경우 –

2

버튼 클릭 이벤트에 로직을 작성, 나는 이상한 뭔가를 발견 할 때 [HttpPost] //이 사용

한다고 가정 고객과의 생성자가 수행 매개 변수,

내가 new Customer(id, "name")를 사용하는 경우에

using (var db = new EfContext("name=EfSample")) 
{ 
    db.Customers.Add(new Customer(id, "name")); 
    db.SaveChanges(); 
} 

I

using (var db = new EfContext("name=EfSample")) 
{ 
    db.Customers.Add(new Customer(id, "name"){}); 
    db.SaveChanges(); 
} 

을 t 오류없이 통해 실행,하지만 난 데이터베이스로 볼 때, 나는 데이터가 삽입되지 않는다는 사실에서 찾을

을하지만 중괄호를 추가하는 경우, new Customer(id, "name"){}를 사용 할 데이터가 실제로 삽입 될 것입니다.

은 중괄호로 보이지만 차이점을 만들 때는 중괄호를 추가 할 때 엔티티 프레임 워크가 이것이 실제 구체적인 데이터임을 인식합니다.

관련 문제