He creado una clase de entidad en mi aplicación MVC 3. Uno de los atributos llamado RegistryId es la clave principal y la clave externa. ¿Cómo puedo crear una clave principal de columna y una clave externa? No estoy usando el diseñador EF ORM. Estoy codificando clases a mano.Clave principal/externa en Entity Framework
31
A
Respuesta
55
Creo que por "no utilizar el diseñador EF ORM" te refieres a la nueva API DbContext
de EF 4.1. Porque si no quiere decir DbContext
API, todavía debe usar EDMX (diseñador).
También se puede usar anotaciones de datos (System.ComponentModel.DataAnnotations
): KeyAttribute
y ForeignKeyAttribute
:
public class Registry
{
public virtual int Id { get; set; }
public virtual MyEntity MyEntity { get; set; }
}
public class MyEntity
{
[Key, ForeignKey("Registry")]
public virtual int RegistryId { get; set; }
public virtual Registry Registry { get; set; }
}
o puede utilizar la API de fluidez (anulando OnModelCreating
en su contexto derivada):
(Edit: mapeo de fluidez era invertida e incompleto)
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<MyEntity>()
.HasKey(e => e.RegistryId);
modelBuilder.Entity<MyEntity>()
.Property(e => e.RegistryId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<MyEntity>()
.HasRequired(e => e.Registry)
.WithRequiredDependent(r => r.MyEntity);
}
Dónde MyEntity
es su entidad con FK y Registry
es la entidad principal en relación 1: 1.
Cuestiones relacionadas
- 1. Entity Framework Association con campos no clave
- 2. ¿Excepción de clave duplicada de Entity Framework?
- 3. ¿Cómo utilizar la palabra clave BETWEEN en Entity Framework?
- 4. Entity Framework - Inserción en varias tablas usando la clave externa
- 5. Vistas y Entity Framework
- 6. SQLite con Entity Framework
- 7. Código Entity Framework First ReadOnly Entity
- 8. Entity Framework 4 - Herencia
- 9. Entity Framework en .NET?
- 10. MERGE en Entity Framework
- 11. Autonumérico con Entity Framework
- 12. Entity Framework Code-First: defina la clave para este EntityType
- 13. Claves externas de Entity Framework para campos clave no primarios
- 14. Entity Framework relación muchos a muchos sin clave primaria
- 15. .NET Entity Framework Agregar nueva fila con clave primaria incremental
- 16. Código Entity Framework Primera clave de solo lectura
- 17. Entity Framework 5 Nombramiento clave con el código primero
- 18. Entity Framework - Cascade Delete no se establece en Entity Model
- 19. Entity Framework 4: ¿Cómo encontrar la clave principal?
- 20. Entity Framework: campo de clave compuesta no puede ser anulable?
- 21. Entity Framework: ¿Cómo elimino un registro por su clave principal?
- 22. Cómo administrar claves "secundarias" en Entity Framework
- 23. LoadProperty en Entity Framework 5
- 24. Entity Framework - Seleccione distinct en
- 25. Entity Framework en eliminar cascada
- 26. de paginación en Entity Framework
- 27. Entity Framework consultas velocidad
- 28. Entity Framework .. constructor parcial
- 29. Entity Framework Merge Nightmare
- 30. Relación autorreferencial/padre-hijo en Entity Framework
@Hi Ladislav: ¿y si hay una relación de uno a muchos? – DotnetSparrow
Con la clave primaria uno a muchos en MyEntity no puede ser una clave externa. Debe haber otra propiedad de FK o ninguna propiedad de FK. –
@Ladislav: Cuando intento usar [ForeignKEy ("")], solicita el nombre de la columna. ¿Necesito dar el Registro dentro de él o el Id de la entidad de registro? – DotnetSparrow