Я пытаюсь создать некоторые интеграционные тесты без внешних зависимостей базы данных, поэтому использую SQL CE 4.0 и пытаюсь настроить его с помощью FluentNhibernate.
Я дошел до того, что тесты создают файл базы данных каждый раз, когда он запускается, а затем создают таблицу, которую я хочу использовать, но она никогда не устанавливает для столбца Id значение и спецификацию идентификатора. Когда я тогда пытаюсь вставить в таблицу с Nhibernate, он жалуется на пустой столбец идентичности.
Это моя картографическая защита и класс данных:
public class AffiliateApplicationRecord
{
public virtual int Id { get; private set; }
public virtual string CompanyName { get; set; }
public virtual string Email { get; set; }
public virtual string DomainName { get; set; }
public virtual DateTime DateReceived { get; set; }
public AffiliateApplicationRecord()
{
DateReceived = DateTime.Now;
}
}
public class AffiliateApplicationRecordMap : ClassMap<AffiliateApplicationRecord>
{
public AffiliateApplicationRecordMap()
{
Table("Partner");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.CompanyName, "Name");
Map(x => x.DomainName, "Domain");
Map(x => x.Email);
Map(x => x.DateReceived, "TimeStampCreated");
}
}
И это методы, которые настраивают фабрику сеансов, которую я вызываю в своих репозиториях, чтобы заставить фабрику сеансов выполнять запросы / вставлять данные.
РЕДАКТИРОВАТЬ: добавлена настройка диалекта ...
private ISessionFactory CreateSessionFactory()
{
var config = Fluently.Configure()
.Database(
MsSqlCeConfiguration.Standard
.Dialect<MsSqlCe40Dialect>()
.ConnectionString("Data Source=DatabaseFileName.sdf"))
.Mappings(m => m.FluentMappings.AddFromAssembly(typeof(AffiliateApplicationRecord).Assembly))
.ExposeConfiguration(BuildSchema)
.BuildConfiguration()
return config.BuildSessionFactory();
}
private static void BuildSchema(Configuration config)
{
new SchemaExport(config).Create(false, true);
}
Я бы очень признателен за помощь в этом. Меня беспокоит, что либо Fluent не сделает этого для меня, либо SQL CE не будет работать.
Заранее спасибо за помощь.