2013-03-20 2 views
3

엔티티 프레임 워크에서 삽입시 SQL 기본값을 사용하고 필드를 업데이트 할 수있는 방법이 있습니까? 우리는 SQL 테이블이 identity 컬럼 "id"를 가지고 있고 또 다른 컬럼이 ident_current ("table")로 설정되어있는 인스턴스를 가지고 있습니다. 필드가 기본값으로 삽입되게하는 유일한 방법은 필드를 DatabaseGenerated(DatabaseGeneratedOption.Computed)으로 설정하여 삽입시 무시되도록하는 것입니다. 그러나이 속성을 사용하면 열에 대한 업데이트를 수행 할 수 없습니다. 또한 자체 참조하는 외래 키이므로 삽입을 수행하지 않고 즉각적인 업데이트를 수행하여 문제를 해결할 수 없습니다. 왜 이런 식으로 테이블을 디자인했는지 묻지 마세요. 전에 설정 한 방식대로 지금 당장 붙어 있습니다. 우리의 설정의 간단한 다이어그램은 다음과 같습니다 :삽입시 Entity Framework 데이터베이스 기본값 업데이트 허용

DomainClass :

Class1 { 
    public int id {get;set;} 
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
    public int id2 {get;set;} 
    public string Name {get;set;} 
} 

SQL (의사) :

Table (
    id INT which is an identity(1,1) column, 
    id2 INT NOT NULL with a default value of ident_current("table") 
    Name nvarchar(50) 
) 

우리는 할 EF에 의해 생성 된 INSERT 문을 원할 것 :

INSERT INTO Table(Name) VALUES('Name') 

및 업데이트 수 :

UPDATE table 
SET id2 = *somenumber*, name = 'Name' 

모든 도움에 감사드립니다. 필요한 경우 EF 4.3.1.0을 사용하고 있습니다.

답변

0

AFAIK 방법이 없습니다. thisthat을 참조하십시오.

첫 번째 링크는 시퀀스를 기본 키로 사용하는 것에 대한 제안을 가리키며, 예제 코드를 사용하여 대신 할 수있는 것처럼 보입니다.

두 번째 링크는 현재 기본값으로 지원되지 않는 일반적인 값 처리에 대한 제안을 나타내지 만 필요한 항목에 대한 지원을 추가 할 수있는 또 다른 시작점이 될 수 있습니다.

+0

이 링크가 질문에 대답 할 수도 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. – bummi

+0

@bummi : 의견을 보내 주셔서 감사합니다. 링크 된 제안 사항의 요지를 전달하기 위해 답변을 업데이트했습니다. 그들이 프레임 워크에 대한 제안 일 뿐이므로 실제로는 대답의 일부가 아니며 (매우 간단하게 "아니오"입니다) 잠재적 인 관심사의 포인터 일뿐입니다. – tne

관련 문제