Tengo una tabla de usuarios:Buscar un registro en dbSet encontrar sin el uso de una clave principal
Users:
+ID
+Username
+...
Quiero usar myDBContext.Users.Find(Username)
a la aleta de un usuario. en mi contexto actual No puedo usar su ID.
¿Tengo que usar una consulta LINQ completa? p.ej.
var user = from users in myDBContext.Users.Find(Username)
where users.Username == username
select users
También he tratado de definir el nombre de usuario como clave principal en mi edmx pero que resultó en el siguiente error:
Properties referred by the Principal Role User must be exactly identical to the key of the EntityType CamelotShiftManagementModel.User referred to by the Principal Role in the relationship constraint for Relationship CamelotShiftManagementModel.AssociationUserFK1. Make sure all the key properties are specified in the Principal Role. C:\Code\CamelotShiftManagement\CamelotShiftManagement\Models\CamelotDB.edmx 278 11 CamelotShiftManagement
aún mejor! .. Gracias. – Mortalus
¿No sería mejor usar 'FirstOrDefault' en su lugar? Mi comprensión del método 'SingleOrDefault' es que examinará la tabla * whole * para asegurarse de que solo un registro coincida con la condición. Puede que no sea lo que quiere el OP. – Crono
@Crono Sí, tiene razón para FirstOrDefault si consideramos el rendimiento del mismo en comparación con SingleOrDefault. Pero aquí creo que dependiendo del resultado esperado deberíamos hacer la selección entre estos dos métodos. Si solo desea un resultado único y espera una excepción si hay más de una secuencia de la misma, utilice SinleOrDefault; de lo contrario, use FirstOrDefault. Actualizaré mi respuesta con este contexto. –