0

나는 일종의 일반적인 저장소를 작성하여 메소드를 추가하려고합니다. 모든 추가 괜찮습니다하지만 외국 KEY.But 때문에 외래 키 외래 키 (EF-4)가있는 경우 일반 리포지토리에 새 값을 추가하는 방법은 무엇입니까?

alt text

public class DomainRepository<TModel> : IDomainRepository<TModel> where TModel : class 
{ 
    private ObjectContext _context; 
    private IObjectSet&#60;TModel&#62; _objectSet; 

    public DomainRepository(ObjectContext context) 
    { 
     _context = context; 
     _objectSet = _context.CreateObjectSet&#60;TModel&#62;(); 
    } 

    // do something... 
    public TModel Add<TModel>(TModel entity) where TModel : IEntityWithKey 
    { 
     EntityKey key = _context.CreateEntityKey(entity.GetType().Name, entity);   
     _context.AddObject(key.EntitySetName, entity); 
     _context.SaveChanges(); 
     return entity; 
    } 
    // do something... 
} 

호출 저장소의 작동하지 않는 두 개의 테이블과 관련 테이블이 있습니다

// insert-update-delete 
public partial class AddtoTables 
{ 
    public table3 Add(int TaskId, int RefAircraftsId) 
    { 
     using (DomainRepository<table3> repTask = new DomainRepository<table3>(new TaskEntities())) 
     { 
      return repTask.Add&#60;table3&#62;(new table3() { TaskId = TaskId, TaskRefAircraftsID = RefAircraftsId }); 
     } 
    } 
} 

을 이 테이블에 외래 키 관계가있는 경우 새 값을 추가하는 방법

alt text

+0

개체가 이미있는 경우 암시 적 업데이트를 수행하고 있습니다. 이것이 웜의 깡통이기 때문에 이것을하지 마십시오. 삽입과 업데이트를 구별해야합니다. – Steven

+0

확인 코드를 업데이트 할 예정입니다. SAVECHANGES()가 발생하면 오류가 발생하지 않습니다. – Penguen

+0

확인. 나는 내 대기열을 재 배열한다. 하지만 내 오류 SaveChanges – Penguen

답변

1

대답은 개체를 추가하는 지원을 추가하면 것이다 내가 명확 인터페이스를 udnerstand 생각 해달라고 도움이 원인이 될 것하지만 일반적인 repositary에 외래 키를 가진 개체를 추가하기 위해되어 있는지 확인하는 것이 빌어 먹을 하드 외래 키. 만약 당신이 어딘가에 params ForeignKey[]과 같은 것을 가지고 있다면 당신은 외래 키들을 가진 지원 객체를 갖는 단계를 만들 것이라고 생각합니다. 아마도 충고는 가치가 없지만 가치있는 조언을 얻었습니다.

마틴 파울러 (Martin Fowler)의 엔터 프라이즈 응용 프로그램 아키텍처 패턴을 읽으면 모든 질문에 대한 답변을 얻을 수 있습니다.

+0

확인 반환합니다. 나는 내 대기열을 재 배열한다. 하지만 내 오류 반환 SaveChanges – Penguen

관련 문제