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.
“””
davy.ai
Este código define tres clases:
Foo1
,Foo2
yFoo3
, y una clase estáticaMyMain
.Foo1
contiene una constante protegida_SQL1
que es una cadena de consulta SQL para seleccionar datos deTabla1
. También contiene una lista estática internaXTable1
de tipoList<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étodoQuery
de Dapper, y asigna el resultado aXTable1
.Foo2
contiene una constante protegida_SQL2
que es una cadena de consulta SQL para seleccionar datos deTabla2
. También contiene una lista estática internaXTable1
de tipoList<foo2>
. Además, tiene dos propiedades públicas:Name
yUnitID
, las cuales devuelven los campos correspondientes_Name
y_ID
. El método constructor inicializa la listaXTable2
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 deFoo1
aFoo2
.Foo3
tiene una única propiedad públicaName
con un campo privado correspondiente_Name
.Finalmente,
MyMain
contiene un método estáticoMain
que crea una nueva instancia deFoo1
.Para pasar un parámetro de
Foo1
aFoo2
, 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 enFoo2
. No está claro de dónde proviene este valor ni cómo se relaciona con los datos enTabla1
.