NHibernate를 사용하여 클래스를 매핑하고 있지만 두 개의 다른 데이터베이스에서 동일한 맵을 사용합니다. 이것은 Sybase Anywhere에서 작동하지만 SQLite에서는 작동하지 않습니다.매핑 : 데이터베이스의 기본값
이 내지도 클래스입니다 :
public FooMap()
{
Property(x => x.Date, map =>
{
map.Column(c => c.Default("now(*)"));
map.Generated(PropertyGeneration.Insert);
map.NotNullable(true);
});
}
이는 매퍼입니다 :
public class Provider
{
public void AddMappings(ModelMapper mapper)
{
mapper.AddMappings(Assembly.GetAssembly(typeof(BaseMap)).GetExportedTypes().Where(x => x.Name.EndsWith("Map")));
}
}
SQLite는 지금 기능을 가지고 있지 않기 때문에, Hibernate는이 테이블을 만들려고 할 때이 오류가 발생할 수 .
데이터베이스에 따라 기본값을 삽입하려면 어떻게해야합니까?
var db = DependencyResolver.Current.GetService<Provider>();
if (db == null)
{
throw new NullReferenceException("Service Provider not found.");
}
if (db is SybaseProvider)
{
map.Column(c => c.Default("now(*)"));
}
else // SQLite
{
map.Column(c => c.Default("CURRENT_TIMESTAMP"));
}
map.Generated(PropertyGeneration.Insert);
map.NotNullable(true);
나를 위해 일했다 : 나는 StructureMapMVC을 사용하고