The answer here is very straightforward:
- in case, that the property is available on the
ArticleBase
Table (where the Discriminator column is) map it there. - if the column belongs to child table (e.g. ArticleComputer) then it belongs to the child maping.
So, where the column is there .. should be the mapping
It really does not mean: where it is declared (base, interface). The reason could be, that in C# we do some common stuff in base implementation, while some children (for any reason) could not have this as a part of mapping (it is just virtual)
I.e.: We should map it where the column exists. Nothing else. And then, if we are about to repeatedly mapping it everywhere on all children (because column is declared there):
.. change the design of DB. Move that from children back to parent table.