2009-10-30 7 views
0

SQL Server Pro 인스턴스에있는 bak 파일에서 SqlExpress에 복원 한 데이터베이스가 있습니다. Linq를 사용하여 데이터베이스와 상호 작용하고 쿼리 및 일부 테이블을 업데이트 할 수 있습니다. 그러나, 나는 어떤 종류의 업데이트 (내 UserAddress 테이블)를 받아들이지 않을 적어도 하나의 테이블을 가지고있다. 이 쿼리를 실행하면SQL Server 테이블이 LINQ로 업데이트되지 않았습니다.

  TestDataContext td = new TestDataContext(); 
      UserAddress ua = (from u in td.UserAddresses 
           where u.UserID == 56 
           select u).Single(); 
      ua.Address1 = "ffffffffffffuuuuuuuuuuu"; 
      td.SubmitChanges(); 

아무 일도 발생하지 않습니다. 데이터베이스에 커밋 된 텍스트가 없으며 예외는 없습니다. 이것은 SQL 인증으로 시도했지만 동일한 결과를 얻었지만 연결 문자열 (데이터 원본 = SNEE \ SQLEXPRESS, 초기 카탈로그 = UsersDatabase, 통합 보안 = True)입니다. 다른 누구도 이런 경험을 한 적이 있습니까? 그렇다면 어떻게 작동 시키려고 했습니까?

EDIT 1 desginer에서 주위를 파고 난 후에 나는 이상한 것을 알아 차렸다. 내 사용자 클래스가 나는 또한 확장 방법 정의는 사용자에 대해 있지만 UserAddress에 대해 정의 된 것으로 나타났습니다이

[Table(Name="dbo.User")] 
public partial class User: INotifyPropertyChanging, INotifyPropertyChanged 

처럼 보인다 그러나 주소 클래스는이

[Table(Name="dbo.UserAddress")] 
public partial class UserAddress 

것 같습니다. 뭐라 구요? 이것이 내 문제의 뿌리라고 확신하지만 왜 이런 일이 일어 났는가? 나는 테스트 datacontext를 만들고 테이블을 다시 드래그하려고했지만 여전히 필요한 코드를 생성하지 않을 것이다.

답변

0

L2S가 생성하는 것을보기 위해 쿼리를 추적 할 수 있습니까? 그 쿼리는 어떻게 생겼습니까? 이를 SSMS에 직접 실행하여 업데이트를 얻을 수 있습니까?

외부의 영향은 있습니까? TRIGGER가 업데이트를 방해하기 전에이 문제를 보았습니다.

0

시도 :

TestDataContext td = new TestDataContext(); 
      UserAddress ua = (from u in td.GetTable<UserAddresses>() 
           where u.UserID == 56 
           select u).Single(); 
      ua.Address1 = "ffffffffffffuuuuuuuuuuu"; 
      td.SubmitChanges(); 
1

내가 내 데이터베이스 인스턴스에 업데이트하려고 한 테이블에 대한 기본 키가 설정되어 있지 않았다. 따라서 Linq는 해당 엔티티 클래스에 대한 삽입, 업데이트 및 삭제 기능을 처리하는 확장 성 방법을 만들지 않았습니다. 답장을 보내 주셔서 감사합니다.

관련 문제