NHibernate + Fluent - Referência nula ou com chave estrangeira inválida

Recentemente esbarrei com uma situação de mapeamento de um banco de dados que possui uma tabela com um campo que é chave estrangeira com referência em outra tabela, só que esse valor pode não existir ou ser nulo.

Contextualizando a situação:

Tabela1

Campo1PK
Campo2
Campo3FK (ref. Tabela2)

Tabela2

Campo1PK (referência para o campo Tabela1.Campo3FK ou qualquer outra tabela)
Campo2


Até aí nada demais, mas então por um motivo ou outro o campo Tabela1.Campo3FK é do tipo "solto", ou seja, você pode colocar o valor que quiser que não há Integridade Referencial, ou seja, você coloca o código 4, quando não existe o registro em Tabela2.Campo1PK com mesmo código, mas não há nada que critique essa falta.

E aí, como mapear? O NHibernate numa situação dessa gerará/levantará uma exceção.

Simples, digamos que a classe/tipo de domínio da Tabela2 se chame Tabela2Type, então na sua classe de domínio Tabela1 existirá algo como:

public virtual Tabela2Type Tabela2 { getset; }

Na classe de mapeamento (Fluent) haverá a seguinte configuração:

References(x => x.Tabela2"Campo3FK").Nullable().NotFound.Ignore();

Sendo que .Nullable() será para aceitar valores nulos, e .NotFound.Ignore() considerará o caso de não existindo o valor seja ignorado não levantando uma exceção nesse caso.

Comentários

Postagens mais visitadas deste blog

Selenium + Firefox = The type initializer for 'System.IO.Compression.ZipStorer' threw an exception

Transmissor sem fio bluetooth Tomate MTB-803 e manual

Problema de rolagem de HTML em iframe no iOS