public void Initializes_all_entity_set_properties_with_setters() { var setterFactory = new ClrPropertySetterFactory(); var setFinderMock = new Mock<IDbSetFinder>(); setFinderMock.Setup(m => m.FindSets(It.IsAny<DbContext>())).Returns( new[] { new DbSetProperty("One", typeof(string), setterFactory.Create(typeof(JustAContext).GetAnyProperty("One"))), new DbSetProperty("Two", typeof(object), setterFactory.Create(typeof(JustAContext).GetAnyProperty("Two"))), new DbSetProperty("Three", typeof(string), setterFactory.Create(typeof(JustAContext).GetAnyProperty("Three"))), new DbSetProperty("Four", typeof(string), null) }); var customServices = new ServiceCollection() .AddInstance<IDbSetInitializer>(new DbSetInitializer(setFinderMock.Object, new DbSetSource())); var serviceProvider = TestHelpers.Instance.CreateServiceProvider(customServices); using (var context = new JustAContext(serviceProvider, new DbContextOptionsBuilder().Options)) { Assert.NotNull(context.One); Assert.NotNull(context.GetTwo()); Assert.NotNull(context.Three); Assert.Null(context.Four); } }
private static DbSetProperty[] FindSetsNonCached(Type contextType) { var factory = new ClrPropertySetterFactory(); return(contextType.GetRuntimeProperties() .Where( p => !IsStatic(p) && !p.GetIndexParameters().Any() && p.DeclaringType != typeof(DbContext) && p.PropertyType.GetTypeInfo().IsGenericType && (p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet <>) #pragma warning disable CS0618 // Type or member is obsolete || p.PropertyType.GetGenericTypeDefinition() == typeof(DbQuery <>))) #pragma warning restore CS0618 // Type or member is obsolete .OrderBy(p => p.Name) .Select( p => new DbSetProperty( p.Name, p.PropertyType.GetTypeInfo().GenericTypeArguments.Single(), p.SetMethod == null ? null : factory.Create(p), #pragma warning disable CS0618 // Type or member is obsolete p.PropertyType.GetGenericTypeDefinition() == typeof(DbQuery <>))) #pragma warning restore CS0618 // Type or member is obsolete .ToArray()); }
public void Initializes_all_entity_set_properties_with_setters() { var setterFactory = new ClrPropertySetterFactory(); var setFinderMock = new Mock <IDbSetFinder>(); setFinderMock.Setup(m => m.FindSets(It.IsAny <DbContext>())).Returns( new[] { new DbSetProperty("One", typeof(string), setterFactory.Create(typeof(JustAContext).GetAnyProperty("One"))), new DbSetProperty("Two", typeof(object), setterFactory.Create(typeof(JustAContext).GetAnyProperty("Two"))), new DbSetProperty("Three", typeof(string), setterFactory.Create(typeof(JustAContext).GetAnyProperty("Three"))), new DbSetProperty("Four", typeof(string), null) }); var customServices = new ServiceCollection() .AddSingleton <IDbSetInitializer>(new DbSetInitializer(setFinderMock.Object, new DbSetSource())); var serviceProvider = InMemoryTestHelpers.Instance.CreateServiceProvider(customServices); using (var context = new JustAContext( new DbContextOptionsBuilder().UseInternalServiceProvider(serviceProvider).Options)) { Assert.NotNull(context.One); Assert.NotNull(context.GetTwo()); Assert.NotNull(context.Three); Assert.Null(context.Four); } }
static ManyToManyCollectionMetadata BuildCollectionMetadata(EntityType parentEntityType, string name) { PropertyInfo propInfo = parentEntityType.ClrType.GetRuntimeProperty(name); if (propInfo == null) { throw new Exception($"Navigation property '{name}' couldn't be found."); } Type[] genericArgs; if (!propInfo.PropertyType.GetTypeInfo().IsGenericType || (genericArgs = propInfo.PropertyType.GetTypeInfo().GenericTypeArguments).Length != 1) { throw new Exception($"Type '{propInfo.PropertyType.FullName}' is not a valid collection type."); } Type itemType = genericArgs[0]; EntityType collectionEntityType = parentEntityType.Model.FindEntityType(itemType); ClrPropertyGetterFactory getterFactory = new ClrPropertyGetterFactory(); ClrPropertySetterFactory setterFactory = new ClrPropertySetterFactory(); return(new ManyToManyCollectionMetadata { Getter = getterFactory.Create(propInfo), Setter = setterFactory.Create(propInfo), ItemType = itemType }); }
public void Property_is_returned_if_it_implements_IClrPropertySetter() { var setterMock = new Mock<IClrPropertySetter>(); var propertyMock = setterMock.As<IProperty>(); var source = new ClrPropertySetterFactory(); Assert.Same(setterMock.Object, source.Create(propertyMock.Object)); }
public void Property_is_returned_if_it_implements_IClrPropertySetter() { var setterMock = new Mock <IClrPropertySetter>(); var propertyMock = setterMock.As <IProperty>(); var source = new ClrPropertySetterFactory(); Assert.Same(setterMock.Object, source.Create(propertyMock.Object)); }
public IReadOnlyList <DbSetProperty> FindSets(DbContext context) { var setterFactory = new ClrPropertySetterFactory(); return(new[] { new DbSetProperty("One", typeof(string), setterFactory.Create(typeof(JustAContext).GetAnyProperty("One"))), new DbSetProperty("Two", typeof(object), setterFactory.Create(typeof(JustAContext).GetAnyProperty("Two"))), new DbSetProperty("Three", typeof(string), setterFactory.Create(typeof(JustAContext).GetAnyProperty("Three"))), new DbSetProperty("Four", typeof(string), null) }); }
private static DbSetProperty[] FindSetsNonCached(Type contextType) { var factory = new ClrPropertySetterFactory(); return(contextType.GetRuntimeProperties() .Where( p => !p.IsStatic() && !p.GetIndexParameters().Any() && p.DeclaringType != typeof(DbContext) && p.PropertyType.GetTypeInfo().IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet <>)) .OrderBy(p => p.Name) .Select( p => new DbSetProperty( p.Name, p.PropertyType.GenericTypeArguments.Single(), p.SetMethod == null ? null : factory.Create(p))) .ToArray()); }
private static DbSetProperty[] FindSets(Type contextType) { var factory = new ClrPropertySetterFactory(); return contextType.GetRuntimeProperties() .Where( p => !p.IsStatic() && !p.GetIndexParameters().Any() && p.DeclaringType != typeof(DbContext) && p.PropertyType.GetTypeInfo().IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet<>)) .OrderBy(p => p.Name) .Select( p => new DbSetProperty( p.Name, p.PropertyType.GetTypeInfo().GenericTypeArguments.Single(), p.SetMethod == null ? null : factory.Create(p))) .ToArray(); }
private static DataSetProperty[] FindDataSets(Type contextType) { var factory = new ClrPropertySetterFactory(); return(contextType.GetRuntimeProperties() .Where( p => !Extensions.IsStatic(p) && !p.GetIndexParameters().Any() && p.DeclaringType != typeof(DonutContext) && p.PropertyType.GetTypeInfo().IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(DataSet <>)) .OrderBy(p => p.Name) .Select( p => new DataSetProperty( p.Name, p.PropertyType.GetTypeInfo().GenericTypeArguments.Single(), p.SetMethod == null ? null : factory.Create(p)) { Attributes = p.GetCustomAttributes() }) .ToArray()); }