1

CRUD 및 저장 프로 시저 실행을 처리하기 위해 약 2 년 동안 ADO.NET Strogly Typed DataSet 모델을 사용해 왔습니다. 지난 해 MVC 앱을 만들었고 LINQ의 편리함과 유연성을 즐겼습니다. 아마도 나에게 가장 큰 판매 포인트는 LINQ를 사용하면 SCOPE_IDENTITY를 더 이상 반환하지 않는 "삽입"저장 프로 시저를 만들지 않아도된다는 것입니다 (DataSet 모델의 자동 생성 된 삽입 문은 수정하지 않고이 기능을 수행 할 수 없었습니다).LINQ InsertOnSubmit 필수 디버깅에 필요한 필드

현재 ASP.NET 3.5 WebForms에서 LINQ를 사용하고 있습니다. 내 삽입은 다음과 같이 찾고 있습니다 :

ProductsDataContext dc = new ProductsDataContext(); 
product p = new product 
{ 
     Title = "New Product", 
     Price = 59.99, 
     Archived = false 
}; 

dc.products.InsertOnSubmit(p); 
dc.SubmitChanges(); 

int productId = p.Id; 

그래서,이 제품의 예를 잘, 아주 기본적인, 그리고 미래에, 나는 아마 같은 "때문에 inStock"로 데이터베이스에 더 많은 필드를 추가 할 것 "수량" , etc. ... 내가 이해하는 방식으로, 나는 그 필드를 데이터베이스 테이블에 추가 한 다음 삭제하고 DataContext를 새로 고치기 위해 LINQ to SQL 클래스 디자인보기에 테이블을 다시 추가해야합니다. 그게 맞는 것 같니?

null이 아닌 새 필드는 ASP.NET 빌드 프로세스에서 캐치되지 않습니다. 예를 들어 데이터베이스에 "수량"의 ​​null이 아닌 필드를 추가하면 위의 코드가 계속 작성됩니다. DataSet 모델에서 저장 프로 시저 메서드는 특정 양의 매개 변수를 허용하고 수량 값을 포함하지 않으면 삽입이 실패 할 것이라고 경고합니다. LINQ 저장 프로 시저 메서드에 대해서도 마찬가지입니다. 그러나 LINQ는 삽입 문을 자동으로 생성하는 방법을 제공하지 않기 때문에 내가 시작한 곳으로 돌아 왔습니다.

위와 같은 insert 문을 사용하고 데이터베이스에 null이 아닌 필드를 추가하면 약 10-20 개 장소에서 내 응용 프로그램이 중단되어 검색 할 방법이 없습니다. 그것. "products.InsertOnSubmit"키워드에 대한 솔루션 측 검색을 수행하고 새 필드가 할당되었는지 확인하는 유일한 방법입니까?

더 좋은 방법이 있습니까?

감사합니다.

답변

0

NON-Null 필드를 만들고 기본값은 any로 지정하십시오. 이 방법을 사용하면 이전 행이 알고있는 기본값을 가지게되어 돌아가 테이블에 값을 추가 할 수 있습니다.