示例#1
0
        protected override void OnCreateEntity(DbContextOptins options)
        {
            foreach (var item in ReflectionHelper.GetProperties(this))
            {
                if (ReflectionHelper.IsGenericType(item.PropertyType, typeof(ISession <>)) == false)
                {
                    throw new InvalidCastException($"类型 { nameof(item.PropertyType) } 必须继承 { typeof(ISession<>) }");
                }

                var mapping  = DbTypeSystem.GetMapping(this.GetType(), item);
                var provider = new DbSessionProvider(DbTypeSystem.GetProvider(options.DbConnection, mapping, new DbEntityPolicy()));

                item.CreateSetPropertyLambda()(this, provider.GetTable(ReflectionHelper.GetGenericType(item.PropertyType), item.Name));
            }
        }
 public SessionTable(DbSessionProvider session, MappingEntity entity) : base(session.sessionProvider, typeof(ISession <T>))
 {
     this.session         = session;
     this.entity          = entity;
     this.underlyingTable = this.session.Provider.GetTable <T>(entity.TableId);
 }
 public TrackedTable(DbSessionProvider session, MappingEntity entity) : base(session, entity)
 {
     this.tracked       = new Dictionary <T, TrackedItem>();
     this.identityCache = new Dictionary <object, T>();
 }
 public SessionExecutor(DbSessionProvider session, QueryExecutor executor)
 {
     this.session  = session;
     this.executor = executor;
 }
 public SessionProvider(DbSessionProvider session, EntityProvider provider)
 {
     this.session  = session;
     this.provider = provider;
 }