Actualice a la respuesta de @CodeNotFound .
En EF Core 3.0 DbQuery<T>ha quedado en desuso, en su lugar, debe usar tipos de entidad sin clave que supuestamente hacen lo mismo. Estos se configuran con el HasNoKey()método ModelBuilder . En su clase DbContext, haga esto
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<YourEntityType>(eb =>
{
eb.HasNoKey();
});
}
Sin embargo, existen restricciones, en particular:
- Nunca se realiza un seguimiento de los cambios en el DbContext y, por lo tanto, nunca se insertan, actualizan o eliminan en la base de datos.
- Solo admite un subconjunto de capacidades de mapeo de navegación, específicamente:
- Puede que nunca actúen como el fin principal de una relación.
- Es posible que no tengan navegaciones a entidades propias
- Solo pueden contener propiedades de navegación de referencia que apuntan a entidades regulares.
- Las entidades no pueden contener propiedades de navegación para tipos de entidad sin clave.
Esto significa que para la cuestión de
Si quiero usarlos y modificar datos, ¿debo agregar necesariamente un PK a esas tablas, o hay una solución para no tener que hacerlo?
No puede modificar los datos de esta manera; sin embargo, puede leer. Sin embargo, podría imaginarse usar otra forma (por ejemplo, ADO.NET, Dapper) para modificar datos; esta podría ser una solución en casos en los que rara vez necesita realizar operaciones que no sean de lectura y todavía le gustaría seguir con EF Core para sus casos mayoritarios.
Además, si realmente necesita / desea trabajar con tablas de montón (sin clave), considere deshacerse de EF y use otra forma de hablar con su base de datos.