【发布时间】:2009-10-18 16:53:30
【问题描述】:
当谈到面向对象的编程时,我有点困惑,比如 3 层应用程序。这只是我正在尝试做的一个小例子(我将缩短数据库设计以使其简单)。假设我正在制作票务服务台系统。工单有描述、负责人、到期日,当然还有 ID(唯一)。
假设 ID 只是一个 IDENTITY 列,它是整数类型并自动获取其值 (SQL Server)。也就是说,它只有在插入完成后才会获得它的值。
现在只是一些示例伪代码(它可能不正确,所以不要让语法错误,只是试图获得有关如何存储 ID 的答案)。
我可以轻松创建一个 Ticket 类
public class Ticket
{
private string m_description;
private date m_duedate;
private string m_responsible;
private int m_id; //should this be read only ??? or...how
//then I can have a bunch of Properties to get / set these private variables
public Property Responsible{
get
{ return m_responsible; }
set
{ m_responsible = value; }
}
//and so on..again dont worry about syntax. Now should I have a get / set for the ID?
}
好的,所以我有一个名为ticket的类..但是当我创建一个ticket对象并需要从我的BLL(业务逻辑层)插入它时会发生什么
Bll b = new Bll();
Ticket t = new Ticket();
t.Responsible = someString;
t.DueDate = someDate;
t.Description = someLongString;
//use the BLL to create a ticket object and pass it to the DAL ?
//then assign the ID from the database to t.ID ???
t.ID = bll.InsertTicket(t);
//就是把它传递给BLL,BLL做它的事情,然后把它传递给DAL做一个INSERT语句,然后返回数据库给它的ID号。
所以我的问题是我需要如何或何时分配 t.ID,或者我什至需要在插入完成后给出。我总是对 OOP 感到困惑,因为我倾向于认为它使事情变得更复杂,而不是仅仅传递一大堆参数。
好的,在有人可以帮助我了解我是否需要获取/设置 ID 以及是否应该将该值传递回我的界面之后。我的第二个问题是更新呢? 假设最终用户找到了一张票,所以在我的界面上我检索了一些票数据并且有人想要更新说描述和截止日期。当我“提交”这些更改时,我是否应该只创建一个票证对象,设置所有 get/set 属性值,仅此而已?还是我应该将 ID 号和所有参数传递给我的 BLL 并让它处理这一切?
希望这一切都有意义!
非常感谢大家!
【问题讨论】:
-
@Peter Lillevold 的编辑:“orientated”是不太常用的英式拼写;这不是错误。
标签: .net oop design-patterns