您提供损失信息。也许你想要一个像这个键的东西:Entity Framework。关注这个link;
此外,我有一个想法,优化使用调用 SQL 查询命令从表中获取数据,包括使用 C# 不使用实体框架的 image 数据类型的列,分 3 个步骤,并附有一个小示例:
步骤 0:(默认)创建一个新表。这是我的桌子TBUsers:
CREATE TABLE [dbo].[TBUsers]
(
[STT] [BIGINT] IDENTITY(1,1) NOT NULL,
[HoTen] [NVARCHAR](MAX) NOT NULL,
[MaSo] [NVARCHAR](50) NOT NULL,
[MatKhau] [NVARCHAR](MAX) NOT NULL,
[KhoaLop] [NVARCHAR](MAX) NOT NULL,
[MaTheGui] [NVARCHAR](50) NOT NULL,
[PhanQuyen] [INT] NOT NULL,
[ChoPhepHoatDong] [BIT] NOT NULL,
[NguoiThem] [NVARCHAR](MAX) NOT NULL,
[NgayThem] [DATETIME] NOT NULL,
[SoDuKhaDung] [BIGINT] NOT NULL,
[DangGui] [BIT] NOT NULL,
[TruyCapLanCuoi] [DATETIME] NULL,
[ThoiGianGuiCuoi] [DATETIME] NULL,
[HinhAnh] [IMAGE] NULL,
[DonGia] [BIGINT] NULL,
CONSTRAINT [PK_TBUsers]
PRIMARY KEY CLUSTERED ([MaTheGui] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
第一步:新建一个对应上表的类,并创建2个构造函数Users:
public class Users
{
public Users()
{ }
public Users(object sTT, object hoTen, object maSo, object matKhau, object khoaLop, object maTheGui, object phanQuyen, object choPhepHoatDong,
object nguoiThem, object ngayThem, object soDuKhaDung, object dangGui, object truyCapLanCuoi, object thoiGianGuiCuoi, object hinhAnh,object donGia)
{
STT = sTT.ToString();
HoTen = hoTen.ToString();
MaSo = maSo.ToString();
MatKhau = matKhau.ToString();
KhoaLop = khoaLop.ToString();
MaTheGui = maTheGui.ToString();
PhanQuyen = phanQuyen.ToString();
ChoPhepHoatDong = choPhepHoatDong.ToString();
NguoiThem = nguoiThem.ToString();
NgayThem = ngayThem.ToString();
SoDuKhaDung = soDuKhaDung.ToString();
DangGui = dangGui.ToString();
TruyCapLanCuoi = truyCapLanCuoi.ToString();
ThoiGianGuiCuoi = thoiGianGuiCuoi.ToString();
HinhAnh = hinhAnh==System.DBNull.Value?null: (byte[])hinhAnh;
DonGia = donGia.ToString();
Color = (bool)choPhepHoatDong;
}
public string STT { get; set; }
public string HoTen { get; set; }
public string MaSo { get; set; }
public string MatKhau { get; set; }
public string KhoaLop { get; set; }
public string MaTheGui { get; set; }
public string PhanQuyen { get; set; }
public string ChoPhepHoatDong { get; set; }
public string NguoiThem { get; set; }
public string NgayThem { get; set; }
public string SoDuKhaDung { get; set; }
public string DangGui { get; set; }
public string TruyCapLanCuoi { get; set; }
public string ThoiGianGuiCuoi { get; set; }
public byte[] HinhAnh { get; set; }
public string DonGia { get; set; }
public bool Color { get; set; }
}
}
第 2 步:使用 ParseUser 函数从数据库中获取 Users:
public static Users ParseUser(DataRow row)
{
var stt = row["STT"];
var hoTen = row["HoTen"];
var maSo = row["MaSo"];
var matKhau = row["MatKhau"];
var khoaLop = row["KhoaLop"];
var maTheGui = row["MaTheGui"];
var phanQuyen = row["PhanQuyen"];
var choPhepHoatDong = row["ChoPhepHoatDong"];
var nguoiThem = row["ChoPhepHoatDong"];
var ngayThem = row["ChoPhepHoatDong"];
var soDuKhaDung = row["SoDuKhaDung"];
var dangGui = row["DangGui"];
var truyCapLanCuoi = row["TruyCapLanCuoi"];
var guiLanCuoi = row["ThoiGianGuiCuoi"];
var hinhAnh = row["HinhAnh"] == System.DBNull.Value ? null : row["HinhAnh"];
var donGia = row["DonGia"];
return new Users(stt, hoTen, maSo, matKhau, khoaLop, maTheGui, phanQuyen, choPhepHoatDong, nguoiThem, ngayThem, soDuKhaDung, dangGui,
truyCapLanCuoi, guiLanCuoi, hinhAnh, donGia);
}
第 3 步: 使用 ParseUser 函数轻松获取 Users 类的实例:
Users user = ParseUser(sqlUtility.GetDataTable($"SELECT * FROM [dbo].[TBUsers] WHERE MaSo = 'xxx' AND ChoPhepHoatDong=1;").Rows[0]);
同样,您可以创建一个类来使用任何集合(例如List<User> 或IEnumerable<User>)检索整个Users。您可以使用 LinQ 来查询这些数据。