public void Add(EdmEntitySet entitySet, EdmEntityType entityType)
        {
            Contract.Requires(entitySet != null);
            Contract.Requires(entityType != null);

            var i = 0;

            List<EdmEntityType> entityTypes;
            if (!_entityTypes.TryGetValue(entitySet, out entityTypes))
            {
                entityTypes = new List<EdmEntityType>();
                _entityTypes.Add(entitySet, entityTypes);
            }

            for (; i < entityTypes.Count; i++)
            {
                if (entityTypes[i] == entityType)
                {
                    return;
                }
                else if (entityType.IsAncestorOf(entityTypes[i]))
                {
                    break;
                }
            }
            entityTypes.Insert(i, entityType);
        }
Пример #2
0
 private void MarkColumnsAsNonNullableIfNoTableSharing(
     EdmEntitySet entitySet, DbTableMetadata table, EdmEntityType dependentEndEntityType,
     IEnumerable<DbTableColumnMetadata> columns)
 {
     // determine if base entities share this table, if not, the foreign keys can be non-nullable
     var mappedBaseTypes =
         _tableMappings[table].EntityTypes.GetEntityTypes(entitySet).Where(
             et =>
             et != dependentEndEntityType &&
             (et.IsAncestorOf(dependentEndEntityType) || !dependentEndEntityType.IsAncestorOf(et)));
     if (mappedBaseTypes.Count() == 0
         || mappedBaseTypes.All(et => et.IsAbstract))
     {
         columns.Each(c => c.IsNullable = false);
     }
 }
        public void IsAncestorOf_should_return_correct_answer()
        {
            var entityType1 = new EdmEntityType { Name = "E1" };
            var entityType2 = new EdmEntityType { Name = "E2" };
            entityType2.BaseType = entityType1;
            var entityType3 = new EdmEntityType { Name = "E3" };
            entityType3.BaseType = entityType1;
            var entityType4 = new EdmEntityType { Name = "E4" };
            entityType4.BaseType = entityType2;

            Assert.True(entityType1.IsAncestorOf(entityType4));
            Assert.False(entityType3.IsAncestorOf(entityType4));
        }