2011-11-30 3 views
1

저는 C# MVC를 사용하고 있습니다. 2 개의 테이블에 2 개의 새로운 레코드 (직원 및 주소 테이블)를 만들려고합니다. 나는 지금까지 다음과 같습니다MVC 컨트롤러 새 레코드 만들기

직원 레코드를 생성
db.employee.AddObject(empmodel.employee); 
    db.address.AddObject(empmodel.address); 
    db.SaveChanges(); 

, 그것은 자동 생성되는다는 EmpID 레코드를 작성가. EmpID를 가져 와서 EmpID가있는 주소 테이블에 새 레코드를 만들어야합니다. 2 개의 테이블간에 주요 외래 키 관계가있는 것처럼 말입니다.

Employee 테이블에서 EmpID를 가져온 다음 주소 테이블에 대한 새 레코드를 만드는 방법을 모르겠습니다. 내가 AddObject 후에 그것을 얻을 수 있다고 생각했지만 그것은 직원 기록을 만들지 않았다.

+0

당신이 코드를 처음 developement에 뭐하는거야? 아니면 EDMX 파일에 의존하고 있습니까? 도움이 될 EF 접근 방식에 대한 몇 가지 세부 정보를 제공 할 수 있다면. –

+0

테스트 해 보셨습니까? EF를 사용하고 있다면 db.employee에 empmodel을 추가 한 다음 SaveChanges()를 추가 할 수 있어야합니다. EF가 귀하의 주소 기록 생성을 처리합니다. – Maess

+0

@Maess 그가 EF에서 설정 한 관계가있는 경우에만 :) – Dismissile

답변

1

나는 의견을 말하지 않아도된다고 알고 있지만,이 경우에는이 대답이 옳다. 더 이상 갈 필요가 없다. 데이터베이스 테이블에 ID 필드가있는 경우 데이터베이스 테이블을 사용하여 모델을 만드는 경우 그것은 당신을위한 get/set 방법을 만들 것입니다. 광산에서는 심지어 내 ID 필드의 이름이 ProdID이기 때문에 더 정교한 get/set 메서드를 만들었습니다. 그러나 model.cs 파일을 확장 한 다음 (데이터베이스에서 모델을 만든 후에)이 사람들이 말하는 get/set 메쏘드를 볼 수 있습니다. 경우에 당신은 당신이 단지 함수를 작성 컨트롤러에

card.Guid = Guid.NewGuid(); 

NewGuid() 방법을 사용할 수있는 GUID을 사용하고 있습니다.

3

당신이 제공하는 코드가 주어진다면 Entity Framework를 사용하고 있다고 가정합니다. 당신은 당신의 두 엔티티 사이의 관계를 설정하고 EF 당신을 위해이 문제를 해결할 수 있도록해야합니다

public class Employee { 
    public int EmployeeId { get; set; } 
    public virtual Address Address { get; set; } 
} 

public class Address { 
    public int AddressId { get; set; } 
    public int EmployeeId { get; set; } 
    public virtual Employee Employee { get; set; } 
} 

을 이제 실체 만들 때 :

// create a new Employee 
Employee employee = new Employee(); 

// create a new Address 
Address address = new Address(); 

// associate the address with the new employee 
employee.Address = address; 

// add the employee to the data context 
db.employee.AddObject(employee); 

// when you call save changes, since your Address is attached to your 
// employee, it will get added for you and you don't have to add it to the 
// context yourself. Entity Framework will save the Employee, get the ID 
// from this table and then add a new Address record using the ID that was 
// just inserted. 
db.SaveChanges(); 

그것은 두 객체를 추가하기위한 외래 키를 추가 할 것 당신.

편집

이 코드 첫 번째 예이다. 디자이너를 사용하여 먼저 데이터베이스를 사용하는 경우 디자이너를 사용하여 관계를 설정하면됩니다. 이 경우 직원을 추가하는 코드를 변경해서는 안됩니다.

+0

db.employee.AddObject (empmodel.employee); db.address.AddObject (empmodel.address); 한 번에 2 개의 별도의 테이블에 2 개의 레코드를 만들어야합니다. EmpID를 처음부터 두 번째로 입력하려면 어떻게합니까? –

+1

제 대답을 읽어주십시오. 관계를 설정하면 하위 오브젝트를 수동으로 추가하지 않아도됩니다. 데이터베이스에 추가됩니다. – Dismissile

관련 문제