2011-10-17 1 views
3

Я недавно играл с белым nhibernate &, более конкретно, тестирование настойчивость.Спецификация спецификации настойчивость с плавными nhibernate сопоставлениями

Тем не менее, я продолжаю сталкиваться с ошибкой sql lite при выполнении относительно простого теста с nunit при построении схемы для теста в этой строке: (SessionSource.BuildSchema (Session)).

System.Data.SQLite.SQLiteException: SQLite ошибка рядом с «/»: синтаксис ошибка

Искомое некоторые некоторые указания на то, что я делаю неправильно, как я относительно новым для свободно. Есть ли более простой способ устранения этого сообщения об ошибке?

public class Contact 
{ 
    public int Id { get; protected set; } 
    // some other properties 
    public IList<Note> Notes { get; set; } 
} 

public ContactMapping() 
{ 
    Not.LazyLoad(); 
    Id(m => m.Id).GeneratedBy.Identity(); 
    HasMany(x => x.Notes).KeyColumns.Add("ContactId"); 
} 

public class Note 
{ 
    public int Id { get; protected set; } 
    public Contact Contact { get; set; } 
    public string Title { get; set; } 
    public string Description { get; set; } 
} 

public NoteMapping() 
{ 
    Not.LazyLoad(); 
    Id(m => m.Id).GeneratedBy.Identity(); 
    Map(m => m.Title).Not.Nullable().Length(250); 
    Map(m => m.Description).Not.Nullable().Length(2500); 
    References(x => x.Contact).Column("ContactId").Cascade.All(); 
} 

Config:

public void SetupContext() 
{ 
    var cfg = Fluently.Configure() 
     .Database(SQLiteConfiguration.Standard 
      .ShowSql() 
      .InMemory 
      ); 
    SessionSource = new SessionSource(cfg.BuildConfiguration() 
              .Properties, PersistenceModel()); 
    Session = SessionSource.CreateSession(); 
    SessionSource.BuildSchema(Session); 
} 

private static PersistenceModel PersistenceModel() 
{ 
    var model = new PersistenceModel(); 
    model.AddMappingsFromAssembly(typeof(Contact).Assembly); 
    return model; 
} 

И, наконец, тест на устойчивость:

new PersistenceSpecification<Contact>(Session) 
    .CheckProperty(c => c.Id, 1) 
    .CheckProperty(c => c.First, "Coding") 
    .CheckProperty(c => c.Last, "Quiz") 
    .CheckProperty(c => c.Email, "[email protected]") 
    .CheckReference(c => c.Notes, new Note { Title = "Title", Description = "Description" }) 
    .VerifyTheMappings(); 

ответ

7

Вы должны использовать CheckList в PersistanceSpecification классе вместо CheckReference в приведенном выше коде.

+0

Спасибо, Коул, помните об этом. Однако моя проблема заключается в том, что генерация схемы, по-видимому, не работает по какой-либо причине до выполнения теста действия в этой строке: SessionSource.BuildSchema (Session) – Jesse

1

Ну, я чувствую себя немного глупо. Одним из столбцов, которые я исключил из моего первоначального сообщения, было поле DateTime, у которого было неправильное значение по умолчанию, которое, в свою очередь, создавало недопустимый sql при построении схемы.

Вывод конфигурации таблицы при построении схемы выделил мою ошибку.

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

  • Нет связанных вопросов^_^