2009-09-01 2 views
2

원인, 나는 업데이트()를 호출 방법은 항상 NullReferenceException이를 던져 것으로 나타났습니다. 이는 3.0.0.3 릴리스에 포함 된 샘플 MVC 다운로드에서도 마찬가지입니다.음속 SimpleRepository 업데이트는 음속의 새로운 SimpleRepository 연구에서 null 참조 예외

업데이트가 성공할 수있는 방법이 있는지 아는 사람 있습니까?

다음은 예입니다. if 문이 작동합니다. 테이블을 추가하고 레코드를 만듭니다. 이 코드를 else 블록으로 두 번째로 실행하면 업데이트에서 예외가 throw됩니다.

var repo = new SimpleRepository("c", SimpleRepositoryOptions.RunMigrations); 

var user = repo.Single<User>(u => u.Email == "[email protected]"); 

if (user == null) 
{ 
    repo.Add(new User { Email = "[email protected]", Name = "Test" }); 
} 
else 
{ 
    user.Name = DateTime.Now.ToString(); 
    repo.Update(user); 
} 

public class User 
{ 
    public int Key { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 

답변

3

내가이 문제를 발견했다고 생각합니다. SubSonic 소스에는 업데이트 쿼리 개체의 테이블 목록을 열 이름으로 쿼리하는 Update 루틴에 사소한 결함이 있습니다. Linq 쿼리는 Name 속성이 아닌 해당 열의 QualifiedName 속성을 사용해야했습니다. 쿼리 설정 (쿼리의 오른쪽)은 정규화 된 이름을 사용합니다.

내가뿐만 아니라 음속의 GitHub의 사이트에 문제를 제출 :)

를 관심있는 분들의 자유를했다, 문제는

변경 (쿼리 폴더에) Update.cs에 선 229입니다 이 ... 이것에

var col= table.Columns.SingleOrDefault(
    x => x.Name.Equals(s.ColumnName, StringComparison.InvariantCultureIgnoreCase) 
); 

...

var col = table.Columns.SingleOrDefault(
    x => x.QualifiedName.Equals(
    s.ColumnName, StringComparison.InvariantCultureIgnoreCase 
) 
); 

은 다시 당신이있어 잘 가라.

0

이 문제가 발생하여 최신 음원 소스를 다운로드 할 수 있었으며 문제는 이미 해결되었습니다. SubSonic.Core 프로젝트를 열고 SubSonic.Core에 대한 프로젝트 참조를 빌드하고 대체하십시오.

다운로드 최신 소스 붐 http://github.com/subsonic/SubSonic-3.0

- 저장소 업데이트가 다시 작동합니다!

관련 문제