public StateEntryFactory( [NotNull] DbContextConfiguration configuration, [NotNull] EntityMaterializerSource materializerSource) { Check.NotNull(configuration, "configuration"); Check.NotNull(materializerSource, "materializerSource"); _configuration = configuration; _materializerSource = materializerSource; }
public void Can_create_materializer_for_entity_with_fields() { var entityType = new EntityType(typeof(SomeEntityWithFields)); entityType.AddProperty("Id", typeof(int)); entityType.AddProperty("Foo", typeof(string)); entityType.AddProperty("Goo", typeof(Guid)); var factory = new EntityMaterializerSource(new MemberMapper(new FieldMatcher())).GetMaterializer(entityType); var gu = Guid.NewGuid(); var entity = (SomeEntityWithFields)factory(new ObjectArrayValueReader(new object[] { "Fu", gu, 77 })); Assert.Equal(77, entity.Id); Assert.Equal("Fu", entity.Foo); Assert.Equal(gu, entity.Goo); }
public void Can_create_materializer_for_entity_ignoring_shadow_fields() { var entityType = new EntityType(typeof(SomeEntity)); entityType.AddProperty("Id", typeof(int)); entityType.AddProperty("IdShadow", typeof(int), shadowProperty: true, concurrencyToken: false); entityType.AddProperty("Foo", typeof(string)); entityType.AddProperty("FooShadow", typeof(string), shadowProperty: true, concurrencyToken: false); entityType.AddProperty("Goo", typeof(Guid)); entityType.AddProperty("GooShadow", typeof(Guid), shadowProperty: true, concurrencyToken: false); var factory = new EntityMaterializerSource(new MemberMapper(new FieldMatcher())).GetMaterializer(entityType); var gu = Guid.NewGuid(); var entity = (SomeEntity)factory(new ObjectArrayValueReader(new object[] { "Fu", "FuS", gu, Guid.NewGuid(), 77, 777 })); Assert.Equal(77, entity.Id); Assert.Equal("Fu", entity.Foo); Assert.Equal(gu, entity.Goo); }
public void Fields_flagged_as_null_are_converted_to_nulls() { var valueReaderMock = new Mock<IValueReader>(); valueReaderMock.Setup(m => m.ReadValue<int>(2)).Returns(77); valueReaderMock.Setup(m => m.ReadValue<string>(0)).Throws(new InvalidCastException("Attempt to cast DBNull value.")); valueReaderMock.Setup(m => m.ReadValue<Guid?>(1)).Throws(new InvalidCastException("Attempt to cast DBNull value.")); valueReaderMock.Setup(m => m.IsNull(2)).Returns(false); valueReaderMock.Setup(m => m.IsNull(0)).Returns(true); valueReaderMock.Setup(m => m.IsNull(1)).Returns(true); var entityType = new EntityType(typeof(SomeEntity)); entityType.AddProperty("Id", typeof(int)); entityType.AddProperty("Foo", typeof(string)); entityType.AddProperty("Goo", typeof(Guid?)); var factory = new EntityMaterializerSource(new MemberMapper(new FieldMatcher())).GetMaterializer(entityType); var entity = (SomeEntity)factory(valueReaderMock.Object); Assert.Equal(77, entity.Id); Assert.Null(entity.Foo); Assert.Null(entity.Goo); }