Pregunta

Tengo un modelo de datos ADO .Net Entidad de mi base de datos. En este modelo Tengo tres tablas relacionadas: "Usuarios" El cuadro que contiene ID de usuario y otros detalles. Tabla "Ejecutar" que contiene RunID, ApproverId y otros detalles "RunToUser" que contiene las columnas ID de usuario y RunID

Las relaciones son las siguientes: Users.UserId es una relación uno a uno a Run.ApproverId User.UserId es de muchos a muchos con RunToUser.UserId Run.RunId es de muchos a muchos con RunToUser.RunId

En el Modelo Entidad esto se expresa como dos mesas con 2 relaciones separadas. el uno-a-uno y la relación de muchos a muchos entre usuarios y Ejecutar.

Tengo un ASP.net formview donde quiero editar los datos de ejecución, así como los datos relacionados en los usuarios.

Enlace de datos está funcionando en la mayoría de los casos. Sin embargo cuando se unen a la tabla Usuarios como un EntityDataSource siempre es mediante la asociación relación uno-a-uno.

¿Cómo puedo forzar la EntityDataSource de usar una asociación de relación específica de modo que pueda enlazar los datos de la asignación uno a uno con una etiqueta y los muchos-a-muchos a un DataView?

Probé el "existe" en la cláusula WHERE whichs limita los registros pero todavía insiste en utilizar siempre el uno-a-y sólo muestra el único usuario en todos los controles de enlace de datos. Aquí está el EntityDataSource de los usuarios:

  <asp:EntityDataSource ID="edsUsers_DET" runat="server" 
        ConnectionString="name=MyEntities" DefaultContainerName="MyEntities" 
        EntitySetName="Users" 
        Where="EXISTS(SELECT VALUE p FROM it.Run AS p WHERE p.RunID = @RunID)" >
        <WhereParameters>
           <asp:ControlParameter ControlID="fvRun"  Name="RunID" Type="Int32" />
        </WhereParameters>        
    </asp:EntityDataSource>

Asumo necesitaré dos fuentes de datos entidad uno para la etiqueta y un segundo para el gridview pero hasta que sepa determinar cómo specifiy una asociación no sé cómo proceder más. Gracias, -J

¿Fue útil?

Solución

Sólo el seguimiento desde que encontré la respuesta y se olvidó de cerrar la cuestión.

he descubierto que cuando tiene múltiples asociaciones con la misma tabla externa que ganar un sufijo numérico por defecto. Por lo tanto, la tabla de ejecución tuvo un usuario y una asociación Usuarios1. Cuando se utiliza la opción "Incluir" Parámetro para la EDS que se necesita saber qué asociación de usar que tampoco obvia hasta que se mira en el modelo de EDS.

Me fui pensé un renombrado todas mis asociaciones que tenían los sufijos numéricos. Mi mesa Ejecutar ahora tiene un usuario y una asociación aprobador (en lugar de Usuarios1). Esto le permite a descifrar fácilmente qué buque relaciones para incluir tanto para las partes declarativas EDS y LINQ.

Si quería incluir ambas asociaciones para la EDS Me gustaría hacer algo como:

Include="Users,Approver"

Espero que esto ayude a alguien más, ya que no era muy obvio para mí al principio.

Otros consejos

Si usted tiene una relación uno-a-uno en su base de datos, usted puede construir su modelo de entidad tal que estas dos tablas aparecen como una sola tabla en su modelo de entidad.

Si se construye como esto su unión se convierte en mucho más simple.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top