Thanks for the answer.
I'm not trying to save the supertype, I'm saving the subtype. Perhaps I was not clear enough about that in my post. The point is that I'm trying to check first whether this instance of the subtype already exists in the database.
And it looks to me, that outside an inheritence scenario, it's possible to test for a specific primary key in the constructor and - if it doesn't exist - take the returned empty entity to save the new instance. In an inheritence scenario this seems not to be possible, I have to call the empty constructor explicitly to get an empty instance of the subtype that I can save.
So if AEntity is not a subtype, the following code works, when it is a subtype, you have to uncomment the line otherwise it doesn't work:
AEntity newEnt = new AEntity(1111);
if (newEnt.IsNew)
{
//newEnt = new AEntity();
newEnt.Id = 1111;
newEnt.Name = "abc";
newEnt.Save();
}
Not really a big problem, I just wanted to understand why.