gpt4 book ai didi

c# - 对于数据库键由多列组成的对象,最合适的设计是什么?

转载 作者:行者123 更新时间:2023-11-30 13:34:57 25 4
gpt4 key购买 nike

假设我的数据库中有一个表,它由以下列组成,其中 3 列唯一标识行:

CREATE TABLE [dbo].[Lines]
(
[Attr1] [nvarchar](10) NOT NULL,
[Attr2] [nvarchar](10) NOT NULL,
[Attr3] [nvarchar](10) NOT NULL,
PRIMARY KEY (Attr1, Attr2, Attr3)
)

现在,我的应用程序中有一个对象代表这些行之一。它具有三个属性,对应于数据库中的三个 Attr 列。

public class Line
{
public Line(string attr1, string attr2, string attr3)
{
this.Attr1 = attr1;
this.Attr2 = attr2;
this.Attr3 = attr3;
}

public Attr1 {get; private set;}
public Attr2 {get; private set;}
public Attr3 {get; private set;}
}

应用程序中还有第二个对象,用于存储这些线对象的集合。

这里的问题是:当引用此集合中的单个行时(从调用者的角度来看),什么是最合适的设计?调用者是否应该负责跟踪他正在更改的行的索引,然后只使用该索引直接修改集合中的行?或者...是否应该在对象上有方法来说明以下内容:

public GetLine(string attr1, string attr2, string attr3)
{
// return the line from the collection
}

public UpdateLine(Line line)
{
// update the line in the collection
}

我们正在对我们的团队进行辩论,因为我们中的一些人认为使用集合中的内部索引来引用行更有意义,而其他人则认为当我们使用时没有理由必须引入另一个内部键已经可以根据这三个属性唯一标识一条线路。

想法?

最佳答案

您的对象模型应该设计成对对象消费者有意义。它不应在最大程度上与数据模型绑定(bind)。

从这三个属性的角度来看,对象消费者似乎更直观。如果没有相反的性能问题,我会让对象消费者使用这些属性而不关心数据存储的内部工作(即不要求他们知道或关心内部索引)。

关于c# - 对于数据库键由多列组成的对象,最合适的设计是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479014/

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