gpt4 book ai didi

.net - 如何在面向对象代码中设置 ID

转载 作者:行者123 更新时间:2023-12-01 04:21:26 25 4
gpt4 key购买 nike

当谈到面向对象的编程(例如 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 的类......但是当我创建一个票证对象并需要从我的 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,它做它的事情,并将它传递给 DAL 执行一个 INSERT 语句,然后返回数据库给它的 ID 号。

所以我的问题是我需要如何或何时分配 t.ID 或者我什至需要在插入后给出我完成。我总是对 OOP 感到困惑,因为我倾向于认为它比传递大量参数更复杂。

好的,所以在有人可以帮助我了解我是否需要获取/设置 ID 以及我是否应该将该值传递回我的界面之后。我的第二个问题是更新呢?
假设最终用户找到了一张票,所以在我的界面上我检索了一些票数据,有人想要更新说明和截止日期。当我“提交”这些更改时,我是否应该只创建一个票证对象,设置所有获取/设置属性值,仅此而已?或者我应该将 ID 号和所有参数传递给我的 BLL 并让它处理这一切?

希望这一切都有意义!

非常感谢你们!

最佳答案

答案是这取决于您使用的框架或库。

并非所有 BLL 都让您简单地说 Ticket t = new Ticket() ,您可能必须使用 t = b.CreateTicket()或者其他的东西。 Id 可以是临时值,也可以只是 null/0,直到它被持久化。

关于你问题的第二部分:

如果你想更新一张票你当然不要创建一个新的票证对象。您更新现有对象。

也许您应该根据特定的库或技术来澄清或重新提出问题。

关于.net - 如何在面向对象代码中设置 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1585417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com