ventanas todos seguro secundario nombre necesita manejo los formularios formulario ensamblado descargar con cerrar boton aplicacion anterior abrir abiertos c# sql sql-server entity-framework ado.net

c# - todos - Relaciones de primera clase del código del marco de la entidad



manejo de ventanas en c# (2)

Estoy intentando crear mi modelo en Entity Framework y estoy tratando de resolverlo usando la primera opción del código.

Actualmente tengo 3 tablas en mi base de datos. Mi tabla de estado tiene todos los estados usados ​​en la aplicación web. Tengo una mesa de noticias. Y tengo una tabla de estado de noticias. La razón por la que lo hice así es porque no quiero que todos los estados estén disponibles para las noticias, solo un par de ellas. Entonces mis 3 tablas se verán así:

Tabla de Noticias:

NewsId int required primary key Title varchar required Body varchar required NewsStatusId int required foreign key

NewStatus Table:

NewsStatusId int required primary key StatusId int required foreign key

Tabla de estado

StatusId int required primary key Name varchar required

Al crear las clases para esto, ¿necesito crear clases para News, Status y NewsStatus? Estaba pensando solo en Noticias y Estado? ¿Cómo serían mis relaciones entre las 2/3 clases?

Mi clase de Noticias se ve así

public class News { public int NewsId { get; set; } // rest of my properties public int StatusId { get; set; } }

Clase de estado:

public class Status { public int StatusId { get; set; } public string Name { get; set; } }

¿Cómo se verían estas clases con las relaciones entre las 2/3 clases?

Cualquier código de muestras sería apreciado.


Realmente no necesita una API fluida para una asociación básica de Muchos a Muchos entre Noticias y Estado. Todo será inferido por Code First base on conventions. Dicho esto, podemos personalizar su esquema de base de datos con una API fluida en función de sus requisitos.

public class News { public int NewsId { get; set; } public string Title { get; set; } public ICollection<Status> Statuses { get; set; } } public class Status { public int StatusId { get; set; } public string Name { get; set; } public ICollection<News> Newses { get; set; } } public class Ctp5Context : DbContext { public DbSet<News> Newses { get; set; } public DbSet<Status> Statuses { get; set; } }

Tenga en cuenta que en una asociación Muchos a muchos como esta, no habrá un NewsStatusId como clave externa en la clase Noticias, sino que se mostrará una clave externa NewsId en la tabla de enlaces que hace referencia a la tabla PK en Noticias. Si realmente necesita tener un NewsStatusId en la clase News, entonces tenemos que romper esta asociación a la asociación de uno a varios, lo que significa que terminaremos teniendo 3 entidades y no 2.


Solo News y Status . Escribirías algo como:

modelBuilder.Entity<News>() .HasMany(n => n.Statuses) .WithMany(s => s.News);

(Ajuste las pluralizaciones a su gusto).