orm - Fluent NHibernate referencing entity with natural key -



orm - Fluent NHibernate referencing entity with natural key -

i'm using fluent nhibernate automapping functionality. i've managed database mappings pretty close using conventions, there few things need iautomappingoverride.

in legacy system, have entity class, 'campus', has natural key, 'code'. oracle database type of key varchar2(3 byte). i'm using override this, conventions otherwise assume autogenerated surrogate key. have other entity classes (e.g. building) reference campus entity (with natural key) shown below

<class name="campus" table="campus" ... > <id name="id" type="string"> <column name="camp_code" sql-type="varchar2(3 byte)" /> <generator class="assigned" /> </id> <set name="buildings" ...> <key foreign-key="buil_camp_fk"> <column name="camp_code" /> </key> <one-to-many class="building" /> </set> ... </class> <class name="building" table="building" ... > ... <many-to-one class="campus" name="campus"> <column name="camp_code" not-null="true" /> </many-to-one> ... </class>

the hbm mappings i've generated appear right using next overrides:

public class campusmappingoverride implements iautomappingoverride(of campus) public sub override(byval mapping automapping(of campus)) implements iautomappingoverride(of campus).override mapping.id(function(campus) campus.id, "camp_code").customsqltype("varchar2(3 byte)") end sub end class public class buildingmappingoverride implements iautomappingoverride(of building) public sub override(byval mapping automapping(of building)) implements iautomappingoverride(of building).override mapping.references(of campus)(function(building) building.campus, "camp_code") end sub end class

however, schema export (oracle database) not correct.

create table building ( ... camp_code nvarchar2(255) not null, ... ) create table campus ( camp_code varchar2(3 byte) not null, ... primary key (camp_code) )

as can see building.camp_code nvarchar2(255), seems default string in oracle, should varchar2(3 byte).

i saw there mapping.naturalid function, i'm not sure if working correctly, because if utilize in place of id, mapping exception.

i appreciate help in how deal scenario.

kind regards, ryan.

i agree fnh should recognize column type of other side of association beingness varchar, apparently doesn't. may worthwhile inquire around @ the fnh mailing list

but in order solve current problem, think in mapping override of building, can specify type of column use, (use column() function) can right behaviour yourself.

nhibernate orm fluent-nhibernate automapping natural-key

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

c# - Can ProtoBuf-Net deserialize to a flat class? -

javascript - Change element in each JQuery tab to dynamically generated colors -