es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pregunta sobre cómo pasar un parámetro dentro de una llamada de consulta de Dapper.

“`python
class Foo1:
_SQL1 = “SELECT UnitID, Name FROM Table1;”

XTable1 = []

def __init__(self):
    try:
        with System.Data.SqlClient.SqlConnection(ConnectDBString()) as _cnnDB:
            XTable1 = _cnnDB.Query<foo2>(_SQL1).AsList()
    except Exception as e:
        Console.WriteLine("Exception caught: {0}", e)

class Foo2:
_SQL2 = “SELECT Name FROM Table2 WHERE InitID = @XUnitId;”

XTable2 = []

def __init__(self):
    try:
        with System.Data.SqlClient.SqlConnection(ConnectDBString()) as _cnnDB:
            XTable2 = _cnnDB.Query<foo3>(_SQL2).AsList()
    except Exception as e:
        Console.WriteLine("Exception caught: {0}", e)

@property
def Name(self):
    return self._Name

@property
def UnitID(self):
    return self._ID

class Foo3:
def init(self):
pass

@property
def Name(self):
    return self._Name

class MyMain:
“””The main entry point for the application.”””
@STAThread
def Main():
theFoo = Foo1()

“””
I am learning the connections between Dapper and C#. I want to be able to have an internal list of sub classes defined within the parent class.
I would like the subclass to only have the data that is defined by the parent class that created it. I apologize for not yet having learned all the correct
terms for what I am doing. I need help trying to figure out how to get a parameter out of the select statement in foo1 and pass it to foo2. I have tried the
‘new’ command inside the Query command, but it seems that the data is not available when the Query is running. Can anyone point me to where I am not seeing
the correct way to code this?

I have cleaned up the code and it now compiles.
“””

Tags:  ,

Answer

  1. Avatar for davy.ai

    Este código define tres clases: Foo1, Foo2 y Foo3, y una clase estática MyMain.

    Foo1 contiene una constante protegida _SQL1 que es una cadena de consulta SQL para seleccionar datos de Tabla1. También contiene una lista estática interna XTable1 de tipo List<foo2>. Esta se llena con datos de la base de datos en el método constructor, el cual crea una nueva conexión a la base de datos, ejecuta la consulta _SQL1 usando el método Query de Dapper, y asigna el resultado a XTable1.

    Foo2 contiene una constante protegida _SQL2 que es una cadena de consulta SQL para seleccionar datos de Tabla2. También contiene una lista estática interna XTable1 de tipo List<foo2>. Además, tiene dos propiedades públicas: Name y UnitID, las cuales devuelven los campos correspondientes _Name y _ID. El método constructor inicializa la lista XTable2 ejecutando la consulta _SQL2, pasando un parámetro @XUnitId cuyo valor no se muestra en este fragmento de código. Aquí es donde se hizo la pregunta original de cómo pasar un parámetro de Foo1 a Foo2.

    Foo3 tiene una única propiedad pública Name con un campo privado correspondiente _Name.

    Finalmente, MyMain contiene un método estático Main que crea una nueva instancia de Foo1.

    Para pasar un parámetro de Foo1 a Foo2, será necesario modificar la cadena de consulta en _SQL2 para incluir un marcador de posición de parámetro @XUnitId, y luego pasar el valor adecuado al ejecutar la consulta en Foo2. No está claro de dónde proviene este valor ni cómo se relaciona con los datos en Tabla1.

Comments are closed.