我什么时候应该考虑代表主键......?

use*_*312 3 c# sql

我什么时候应该考虑将主键表示为

当表使用复合键时,我们是否应该只将主键表示为类?

例如:

public class PrimaryKey
    { ... ... ...}
Run Code Online (Sandbox Code Playgroud)

然后

private PrimaryKey _parentID;
        public PrimaryKey ParentID
        {
            get { return _parentID; }
            set { _parentID = value; }
        }
Run Code Online (Sandbox Code Playgroud)

public void Delete(PrimaryKey id)
        {...}
Run Code Online (Sandbox Code Playgroud)

我应该何时考虑将数据作为逗号分隔值存储在数据库表的列中,而不是将它们存储在不同的列中?

Ode*_*ded 8

When should I consider representing the table-id columns as classes?

在不了解您的应用程序架构的情况下更难回答.如果您使用ORM(如nhibernate或linq)来自动执行sql,它们将自动为您创建类.

通常 - 如果您的主键是复合词并且在您的域中具有意义,请为其创建一个类.

如果它不是复合词,则不需要课程.

如果它在你的域中没有意义,那么很难证明一个类(如果创建一个类,我可能会使用结构而不是类,因为它将是一个值类型).我使用一个的唯一原因是,如果密钥需要在代码中使用,并且组成部分通常不需要单独访问.

When should I consider storing data as comma-separated values in a column in a DB table rather than storing them in different columns?.

决不.您应该保持表的规范化,以便为不同的数据设置不同的列和表.在这方面使用逗号分隔是不好的做法,特别是考虑到SQL中相当糟糕的文本操作支持.

  • 我见过人们穿着粉红色的法拉利车.做不对. (7认同)