Puede usar la biblioteca FenixRepo (también disponible como nuget package) para crear una tabla particular, que es una parte de usted Context
.En primer lugar, debe llamar una vez, al inicio static
Initialize
método, donde el primer argumento es un método de fábrica, que devuelve instancia de su Context
y el segundo es una instancia de Configuration
class
. Preparará secuencias de comandos SQL para todas sus tablas, registradas en su Context
. En caso de ASP.NET MVC es una buena decisión para pegar este código en Global.asax:
FenixRepositoryScriptExtractor.Initialize(() => new Context(), new Configuration());
continuación, puede crear la tabla de tipo deseado MyTable
esta sencilla manera:
var repo = new FenixRepositoryCreateTable<MyTable>();
//or repo = new FenixRepository<MyTable>();
repo.CreateTable();
Además, si su tabla se extiende entre varias migraciones y no tienen nada que corresponda a otras tablas, puede especificar estas migraciones (es decir, nombres de clases de la carpeta Migrations) a través del FenixAttribute
, y se usarán exactamente como fuente de scripts SQL, que se usarán para la creación de tablas:
[Fenix(nameof(Initial), nameof(MyTableFirstMigration), nameof(MyTableSecondMigration))]
public class MyTable
{
//some stuff
}
Sin este atributo, la biblioteca utilizará scripts predeterminados. Siempre es mejor especificar migraciones, porque de lo contrario no se garantiza que se crearán todos los índices y también en sus migraciones puede incluir algún código personalizado, que no se ejecutará en el caso de solución predeterminada.
La biblioteca es compatible y se prueba con EF 6.1.3 en el caso de MS SQL.
Hmm, ¿qué se supone que debo poner en la cadena de conexión si no hay una base de datos inicial para que se conecte? Simplemente eliminé el artículo del catálogo inicial y recibí el mismo error de nombre de objeto inválido 'dbo.Movies'. – Pieces
Connection String le dice dónde crear la base de datos. No tiene que existir. Detectará que no existe y luego intentará crearlo si no existe. Siempre que tenga los permisos correctos, todo se creará bien. Creo que si eliminas la base de datos y conservas la misma cadena de conexión, todo terminará funcionando de la manera que deseas. – Dismissile
¡Oh, increíble, muchas gracias! Una última pregunta sobre qué método recomendaría poner el Database.SetInitializer. Obtuve un error que decía que no se podía quitar la base de datos porque estaba en uso. Presumiría por la aplicación de sí mismo. Gracias de nuevo, mi amigo y yo pasamos mucho tiempo buscando tratando de resolver el problema y nunca hubiéramos adivinado que era porque ya no deberíamos crear la base de datos. – Pieces