Chiavi esterne con SchemaExport in Fluent NHibernate utilizzando SQLite
-
27-09-2019 - |
Domanda
Sto tentando di creare una semplice applicazione di database che tiene traccia di prestiti di vari tipi di apparecchiature che utilizzano Fluent NHibernate e SQLite. Tuttavia, quando provo a generare la struttura del database con SchemaExport
per l'uso in unit test, chiavi esterne per relazioni uno-a-molti non vengono creati.
Ecco la mia entità Equipment
:
public virtual int Id { get; set; }
public virtual EquipmentType Type { get; set; }
public virtual int StockId { get; set; }
E qui sono le mie mappature per Equipment
:
Id(x => x.Id);
References(x => x.Type);
Map(x => x.StockId);
L'SQL viene generato correttamente, tranne per la mancanza di chiavi esterne:
create table "Equipment" (
Id integer,
StockId INTEGER,
Type_id INTEGER,
primary key (Id)
)
E 'possibile per SchemaExport
di generare chiavi esterne quando si utilizza un database SQLite?
Grazie.
Soluzione
mi ha colpito lo stesso problema.
SQLite non ha inizialmente supporta le chiavi esterne (funzionalità introdotta in 3.6.19) in modo che la realizzazione NHibernate SQLiteDialect non conosce le chiavi esterne.
SQLite non supporta l'aggiunta di vincoli tramite ALTER TABLE, solo attraverso CREATE TABLE parametri, la creazione chiave esterna predefinita di NHibernate non è utilizzato.
C'è un incidente connesso NHJIRA https://nhibernate.jira.com/browse/NH- 2200