示例#1
0
 public static AdminContext getAdminCtx()
 {
     if (ctx == null)
     {
         ctx = new AdminContext();
     }
     return(ctx);
 }
        public static TenantContext getTenantCxt(string tenant)
        {
            if (first)
            {
                Database.SetInitializer <TenantContext>(null);
                first = false;
            }
            tenant = "newT2";
            string connectionStr = SchemaHandler.getTenantConnectionString(tenant);

            TenantContext t;

            using (var ctx = new AdminContext()) {
                var juego = from j in ctx.Juego
                            where j.nombreJuego.Equals(tenant)
                            select j;
                if (juego.Count <Juego>() == 0)
                {
                    try
                    {
                        SchemaHandler.createTenant(tenant);
                        /*Esto debe llamar a la funcion de creacion de Juego del DJuego*/
                        Juego newJuego = new Juego();
                        //newJuego.id = Guid.NewGuid();
                        newJuego.dominio = "domino" + tenant;
                        using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts")))
                        {
                            w.WriteLine("127.0.0.1 " + tenant + ".atlas2.com");
                        }
                        newJuego.nombreJuego = tenant;
                        ctx.Juego.Add(newJuego);
                        ctx.SaveChangesAsync().Wait();
                        t = new TenantContext(connectionStr, tenant);
                        createTables(t);
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }
                else
                {
                    t = new TenantContext(connectionStr, tenant);
                }
                ctx.Database.Connection.Close();
            }
            return(t);
        }