private async Task <IEnumerable <T> > CanDeleteBillingBase <T>(EntityManager em, String typeName, String expandPropName = null) where T : IEntity
        {
            //    // Registering resource names for each derived type
            //    // because these resource names are not in metadata
            //    // because there are no corresponding DbSets in the DbContext
            //    // and that's how Breeze generates resource names
            MetadataStore.Instance.SetResourceName(typeName + "s", typeof(T));
            var q0 = new EntityQuery <T>(typeName + "s").With(em).Take(1);

            if (expandPropName != null)
            {
                q0 = q0.Expand(expandPropName);
            }
            var r0 = await q0.Execute();

            if (r0.Count() == 0)
            {
                Assert.Inconclusive("Please restart the server - inheritance data was deleted by prior tests");
            }
            var            targetEntity      = r0.First();
            var            targetKey         = targetEntity.EntityAspect.EntityKey;
            List <IEntity> dependentEntities = null;

            if (expandPropName != null)
            {
                var expandVal = (IEnumerable)targetEntity.EntityAspect.GetValue(expandPropName);
                dependentEntities = expandVal.Cast <IEntity>().ToList();
                dependentEntities.ForEach(de => de.EntityAspect.Delete());
            }
            targetEntity.EntityAspect.Delete();
            var sr0 = await em.SaveChanges();

            var deletedEntities = sr0.Entities;

            Assert.IsTrue(deletedEntities.Contains(targetEntity), "should contain target");
            if (expandPropName != null)
            {
                Assert.IsTrue(deletedEntities.Count == dependentEntities.Count + 1);
            }
            Assert.IsTrue(deletedEntities.All(de => de.EntityAspect.EntityState.IsDetached()), "should all be detached");

            // try to refetch deleted
            var r1 = await em.ExecuteQuery(targetKey.ToQuery <T>());

            Assert.IsTrue(r1.Count() == 0, "should not be able to find entity after delete");
            return(r1);
        }