5

Fluent NHibernate와 SQLite를 사용하여 다양한 유형의 장비 대여를 추적하는 간단한 데이터베이스 응용 프로그램을 만들려고합니다. 그러나 단위 테스트에 사용하기 위해 SchemaExport으로 데이터베이스 구조를 생성하려고하면 일대 다 관계의 외래 키가 만들어지지 않습니다.Fluent에서 SchemaExport를 사용하는 외래 키 SQLite를 사용하는 NHibernate

public virtual int Id { get; set; } 

public virtual EquipmentType Type { get; set; } 

public virtual int StockId { get; set; } 

그리고 여기가 Equipment 내 매핑은 다음과 같습니다 : 여기

Equipment 실체

create table "Equipment" (
     Id integer, 
     StockId INTEGER, 
     Type_id INTEGER, 
     primary key (Id) 
    ) 
다음 SQL은 외래 키의 부족을 제외하고, 올바르게 생성됩니다
Id(x => x.Id); 
References(x => x.Type); 
Map(x => x.StockId); 

SchemaExport은 (는) SQLite 데이터베이스를 사용할 때 외래 키를 사용합니까?

감사합니다.

답변

3

같은 문제가 발생했습니다.

SQLite는 초기에 외래 키 (3.6.19에서 도입 된 기능)를 지원하지 않았으므로 NHibernate SQLiteDialect 구현은 외래 키에 대해 알지 못합니다.

SQLite는 ALTER TABLE을 통해 제약 조건 추가를 지원하지 않으므로 CREATE TABLE 매개 변수를 통해서만 NHibernate의 기본 외래 키 작성이 사용되지 않습니다.

NHJIRA에 기록 된 사건이 ​​있습니다 https://nhibernate.jira.com/browse/NH-2200

관련 문제