gpt4 book ai didi

c# - 如何在表示 SQL Server 中身份字段的 POCO 上实现 ID 字段?

转载 作者:行者123 更新时间:2023-11-30 14:42:40 27 4
gpt4 key购买 nike

如果我有一个域模型,其 ID 映射到 SQL Server 标识列,那么包含该字段的 POCO 看起来像什么?

候选人 1:允许任何人设置和获取 ID。我认为我们不希望任何人从 SQL 表中设置 ID,除了 Repository。

public class Thing {
public int ID {get;set;}
}

候选者 2:允许某人在创建时设置 ID,但在我们创建对象之前我们不会知道 ID(工厂创建一个空白的 Thing 对象,其中 ID = 0,直到我们持久化它)。持久化后如何设置ID?

public class Thing {
public Thing () : This (ID: 0) {}
public Thing (int ID) {
this.ID = ID
}
private int _ID;
public int ID {
get { return this.ID;};
}

考生3:设置ID的方法?

我们需要以某种方式允许存储库设置 ID,而不允许消费者更改它。有任何想法吗?这是找错树了吗?我们是否将对象发送到存储库、保存它、丢弃它,然后从加载的版本创建一个新对象并将其作为一个新对象返回?

最佳答案

如果基础值已经非零,公共(public) get 访问器和内部 set 访问器会抛出 InvalidOperationException 怎么样?

显然,您已经有了一些具体化该字段的方法,这样您甚至可以加载记录。为什么不使用相同的机制呢?毕竟,您需要考虑的不仅仅是身份值(value)。它基本上是插入/更新后可以在数据库中更改的任何值,例如计算列、受触发器影响的列等。

关于c# - 如何在表示 SQL Server 中身份字段的 POCO 上实现 ID 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2946957/

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