While I am working a project I have seen this line of NHibernate mapping
HasMany(entity => entity.Tasks).KeyColumn("APPLICATION_ID").Cascade.AllDeleteOrphan().ReadOnly().Inverse();
it is the first time for me I see some one using the inverse and readonly attributes so please could anyone explain them to me.
You can find a detailed description of inverse here
TLDR; from the link
Inverse is a boolean attribute that can be put on the collection mappings, regardless of collection's role (i.e. within one-to-many, many-to-many etc.), and on join mapping.
We can't put inverse on other relation types, like many-to-one or one-to-one.
And this link for Readonly
TLDR;
The only difference apart from different naming for some properties and Property vs. Map name itself is the ReadOnly method available in FNH. It is just a shortcut for setting both .Not.Insert() and .Not.Update().