如果正确输入了登录名和密码,我编写了一个返回所有用户数据的身份验证。这里一切都很好。数据库管理器文件代码:
public static User AuthUser(User user)
{
if (sqlConnection.State == System.Data.ConnectionState.Closed)
sqlConnection.Open();
try
{
SqlCommand command = new SqlCommand(
$"SELECT * FROM [Users] WHERE login = @login AND password = @password",
sqlConnection);
command.Parameters.AddWithValue("login", user.login);
command.Parameters.AddWithValue("password", user.password);
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
user.id = Convert.ToInt32(reader.GetValue(0));
user.lastName = Convert.ToString(reader.GetValue(1));
user.firstName = Convert.ToString(reader.GetValue(2));
user.patronymic = Convert.ToString(reader.GetValue(3));
user.phoneNumber = Convert.ToString(reader.GetValue(4));
user.address = Convert.ToString(reader.GetValue(5));
user.role = (Role)Convert.ToInt16(reader.GetValue(8));
}
sqlConnection.Close();
return user;
}
catch
{
sqlConnection.Close();
return user;
}
}
用户控制器文件代码:
[HttpPost("~/Authentication")]
public User Authentication(string login, string password)
{
return DataBaseManager.AuthUser(
new User(login, password));
}
接下来,我想接收运输公司的所有信息,但实际上,将参数传递给我没有任何意义。数据库管理器文件代码:
public static SDEK GetInfoSDEK(SDEK sdek)
{
if (sqlConnection.State == System.Data.ConnectionState.Closed)
sqlConnection.Open();
try
{
SqlCommand command = new SqlCommand(
$"SELECT * FROM [TransportCompanies] WHERE name = @name",
sqlConnection);
command.Parameters.AddWithValue("name", sdek.name);
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
sdek.id = Convert.ToInt32(reader.GetValue(0));
sdek.price_km = Convert.ToDecimal(reader.GetValue(2));
sdek.price_kg = Convert.ToDecimal(reader.GetValue(3));
sdek.price_insurance = Convert.ToDecimal(reader.GetValue(4));
}
sqlConnection.Close();
return sdek;
}
catch
{
sqlConnection.Close();
return sdek;
}
}
TransportCompanyController 文件代码:
[HttpGet("~/GetInfoSDEK")]
public SDEK GetInfoSDEK()
{
return DataBaseManager.GetInfoSDEK(new SDEK());
}
我要求它返回一个 SDEK 类的实例,但它没有。我通过调试检查了它 - 它写入并查看所有数据。SDEK 类作为库包含(通过分配)。
问题:我做错了什么?
更新:“显示用户和 SDEK 数据模型”
用户型号:
namespace DeliveryApp
{
public enum Role
{
User,
Admin
}
public class User
{
public int id { get; set; }
public string lastName { get; set; }
public string firstName { get; set; }
public string patronymic { get; set; }
public string phoneNumber { get; set; }
public string address { get; set; }
public string login { get; set; }
public string password { get; set; }
public Role role { get; set; }
public User(string lastName, string firstName, string patronymic, string phoneNumber, string address, string login, string password, Role role = Role.User)
{
this.lastName = lastName;
this.firstName = firstName;
this.patronymic = patronymic;
this.phoneNumber = phoneNumber;
this.address = address;
this.login = login;
this.password = password;
this.role = role;
}
public User(string login, string password)
{
this.login = login;
this.password = password;
}
}
}
SDEK 型号:
namespace TransportCompany1
{
public class SDEK
{
public int id = -1;
public string name = "SDEK";
public decimal price_km = 0;
public decimal price_kg = 0;
public decimal price_insurance = 0;
public SDEK(int id, string name, decimal price_km, decimal price_kg, decimal price_insurance) // СЕРВЕР: Отвечает клиенту, если такая транспортная компания существует.
{
this.id = id;
this.name = name;
this.price_km = price_km;
this.price_kg = price_kg;
this.price_insurance = price_insurance;
}
public SDEK() { }
}
}
请注意,在类中,
User
您有属性在课堂上
SDEK
你有领域为了使模型序列化,需要属性