Las claves externas con SchemaExport en Fluido NHibernate usando SQLite
-
27-09-2019 - |
Pregunta
Estoy intentando crear una aplicación de base de datos simple que realiza un seguimiento de los préstamos de diversos tipos de equipos que utilizan Fluido NHibernate y SQLite. Sin embargo, cuando intento generar la estructura de base de datos con SchemaExport
para su uso en las pruebas unitarias, las claves externas de relaciones de uno a muchos no se crean.
Aquí está mi entidad Equipment
:
public virtual int Id { get; set; }
public virtual EquipmentType Type { get; set; }
public virtual int StockId { get; set; }
Y aquí están mis asignaciones para Equipment
:
Id(x => x.Id);
References(x => x.Type);
Map(x => x.StockId);
El SQL se genera correctamente, a excepción de la falta de claves externas:
create table "Equipment" (
Id integer,
StockId INTEGER,
Type_id INTEGER,
primary key (Id)
)
¿Es posible que SchemaExport
para generar las claves externas cuando se utiliza una base de datos SQLite?
Gracias.
Solución
Me golpeó el mismo problema.
SQLite no apoyó inicialmente claves externas (característica introducida en 3.6.19) por lo que la aplicación NHibernate SQLiteDialect no sabe nada de claves externas.
Como SQLite no soporta la adición de restricciones a través de ALTER TABLE, sólo a través de los parámetros de CREATE TABLE, la creación de clave externa por defecto de NHibernate no se utiliza.
Hay un incidente registrado en NHJIRA https://nhibernate.jira.com/browse/NH- 2200