You just found a bug :)
I'll fix it, but in the mean time, change the order of your lazy/nullable calls to be like so:
References(x => x.Food).Cascade.None().Not.LazyLoad().Not.Nullable();
That should work for you temporarily. The problem is the "Nullable" on a OneToMany isn't toggling the "Not" flag after it's called, thus, the second time you were calling Not, just before your lazy load, it was actually doing a "Not Not", or "True" ;)