コード例 #1
0
        public void AddEntityListener()
        {
            var    dbConnection     = Effort.DbConnectionFactory.CreateTransient();
            string testListenerFqtn = typeof(TestListener).AssemblyQualifiedName;

            // Prerequisite : Adding listener

            using (var metadataContext = new MetadataInitializationContext(dbConnection, false))
            {
                var entity = metadataContext.Entities
                             .Where(e => e.Name == "Entity")
                             .Single();

                var listener = new Kelpie.Initialization.Metadata.Models.Listener()
                {
                    FullyQualifiedTypeName = testListenerFqtn,
                    Entity = entity,
                };

                metadataContext.Listeners.Add(listener);
                metadataContext.SaveChanges();
            }

            using (var context = Context.New(dbConnection))
            {
                context.ProxySet <IListener>()
                .Where(i => i.FullyQualifiedTypeName == testListenerFqtn)
                .Single();

                var entity = context.Create <IEntity>();
                entity.Name = "This name must be altered";

                context.ProxySet <IEntity>()
                .Add(entity);

                context.SaveChanges();

                Assert.AreEqual(entity.Name, "ModifiedByTestListener");

                context.ProxySet <IEntity>()
                .Where(e => e.Name == "ModifiedByTestListener").Single();

                context.ProxySet <IAttribute>()
                .Where(e => e.Name == "AttributeCreatedByTestListener" &&
                       e.Entity.Id == entity.Id)
                .Single();
            }
        }
コード例 #2
0
        static IEnumerable <Type> CreateEntitiesTypes(DbConnection existingConnection)
        {
            using (MetadataInitializationContext context = new MetadataInitializationContext(existingConnection, false))
            {
                DynamicAssemblyBuilder assemblyBuilder = new DynamicAssemblyBuilder();

                var entities = context.Entities.Include(c => c.Attributes)
                               .Include(c => c.Listeners)
                               .Include(c => c.Proxies)
                               .Include("Attributes.Type")
                               .Include(c => c.ManyToOneRelationships)
                               .Include(c => c.OneToManyRelationships).ToArray();

                var types = assemblyBuilder.BuildTypes(entities).ToArray();

                assemblyBuilder.SaveAssembly();

                return(types);
            }
        }