在c#中创建一个简单的类来从SQL中收集数据
本文关键字:SQL 数据 一个 创建 简单 | 更新日期: 2023-09-27 18:15:32
我正在努力学习定义类的正确方法。我有两个类,其中Person是关于Person的所有可能信息的定义,而Client使用来自Person的信息并与Person高度连接。
public class Person {
public virtual int ID { get; set; }
public virtual string FirmaNazwa { get; set; }
public virtual string Imie { get; set; }
public virtual string Nazwisko { get; set; }
public virtual Adres Adres { get; set; }
public virtual Adres AdresKorespondencyjny { get; set; }
public virtual UrzadSkarbowy UrzadSkarbowy { get; set; }
public virtual string Pesel { get; set; }
public virtual string Nip { get; set; }
public virtual string Regon { get; set; }
public virtual string Krs { get; set; }
public virtual DateTime KrsData { get; set; }
public virtual string KrsOznaczenie { get; set; }
public virtual string Rodzaj { get; set; } // Typ klienta (Firma / Osoba)
public virtual string Narodowosc { get; set; }
public virtual string ZgodaNaPrzetwarzanieDanychOsobowych { get; set; }
public virtual string ZgodaNaPrzetwarzanieDanychOsobowychMarketing { get; set; }
public virtual Pracownik Uzytkownik { get; set; }
public virtual DateTime DataZmiany { get; set; }
}
public sealed class Client {
public int ID { get; set; }
public Person Person { get; set; }
public Pracownik Uzytkownik { get; set; }
public DateTime DataZmiany { get; set; }
public string Haslo { get; set; }
public string Typ { get; set; }
public void GetClient() {
}
}
我在SQL中有2个表,基本上是与c#中定义的字段相似的Person和Client表。
现在我想添加一些方法(GetClient()和类似的)来实际获取客户端信息,但由于要获取所有客户端信息,我需要首先获取所有Person信息。在SQL中,我会用JOIN的查询,我有点得到与Person信息直接连接的客户信息。那么我是否应该这样做:
public void GetClient() {
//SQLQUERYHERE
Person podmiot = new Person();
podmiot.FirmaNazwa = ...
podmiot.Imie = ...
Haslo = "test";
}
或者我应该做不同的?
这里有各种选项:
O/R映射
使用框架从数据库布局生成类。扩展这些类以添加您自己的功能和额外属性。一些框架可以这样做:
- 实体框架
- NHibernate
- LLBLGen 使用O/R设计器的LINQ to SQL
自己编写代码
您也可以编写自己的查询,但出于学习目的(有时是为了简单,减少开销和依赖性),这是不太推荐的方法。您可以使用使用查询结果填充的DataReader
,并手动分配属性:
foo.Bar = dataReader["Bar"].ToString()
Enterprise Library可以让事情变得简单一些。