我正在使用dapper和lambda表达式,以便从数据库中检索数据。我不想传递大量的重载表达式,而是要传递一个数据库对象,并使lambda表达式与找到的最接近或第一个对象匹配。
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
ServerName quickstart.local
DocumentRoot /var/www/html/quickstart/zendAuth/public
SetEnv APPLICATION_ENV "development"
<Directory /var/www/html/quickstart/zendAuth/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
And in hosts file at the top of the file i have added this `127.0.0.1 quickstart.local`
Can any one check and let me where i have done mistake and please help me out.
在上面的示例中,您可以看到我正在将“ User”对象传递给函数,该用户对象可能是预期对象的50%。例如,如果对象有2个字符串,则ID和用户名。但是我只知道用户名。我将创建一个新用户作为ref或out参数,并让查询填充丢失的数据。
有什么想法吗?我可以使用诸如GetUserByID和GetUserByName这样的双重代码在重载函数上创建大量功能,但这似乎是多余的。
答案 0 :(得分:0)
您需要重新编写查询。请提供dbo.Users表的结构。
将过滤器逻辑放在查询内部,并使用表列匹配记录而不是整个对象。
public static User GetUser(User pUser)
{
using (IDbConnection connection = new SqlConnection(Connection))
{
return connection.Query<User>("Select * FROM dbo.Users where userID = @UserId", pUser).FirstOrDefault();
}
}