2009-09-01 2 views
2

в исследовании новых SimpleRepository дозвуковых, я нашел, что вызов Update () метода всегда бросает NullReferenceException. Это даже верно в образце загрузки MVC, который включен в выпуск 3.0.0.3.дозвукового SimpleRepository Обновления Причины пустой ссылки Исключения

Кто-нибудь знает, есть ли способ получить обновления для успеха?

Вот пример. Оператор if работает; он добавляет таблицу и создает запись. Запуск этого кода второй поток времени в блок else, и обновление генерирует исключение.

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 существует незначительная ошибка в процедуре обновления, где она запрашивает список таблиц в объекте запроса обновления для имени столбца. Запрос Linq должен был использовать свойство QualifiedName столбца, а не свойство Name. Параметры запроса (которые являются правой частью запроса) используют полное имя.

Я взял на себя смелость представляя вопрос на сайте GitHub дозвуковых как хорошо :)

Для тех, кто заинтересован, этот вопрос находится в Update.cs (в папке запросов), Line 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, и проблема была уже исправлена. Просто откройте проект SubSonic.Core и выполните сборку и замените ссылку на проект для SubSonic.Core.

Скачать последнюю версию исходного кода http://github.com/subsonic/SubSonic-3.0

Boom - Repository Update снова работает!

Смежные вопросы