1

SQL 数据库中的自增列

该链接回答了我对 SQL 中是否存在自动增量的疑问。

我现在的问题是这样的

我有 2 个由这些类表示的表

public class A
{
   [Key]
   public int AId{get;set;}
   public int BId{get;set;}
   [ForeignKey("BId")]
   public virtual B pb{get;set;}
}

public class B
{
   [Key]
   public int BId{get;set;}
   public int AId{get;set;}
}

在初始化 A 类的对象期间,发生错误说BId can not be null 在 MySQL 中,我可以声明一个列,AUTO_INCREMENT然后将表初始化为类似

INSERT INTO myTable(col2, col3, col4) VALUES('col2','col3','col4');

假设它col1被声明为自动增量。我想对BIdA 类做类似的事情,这样我就不必为它设置一个整数。

4

2 回答 2

1

如果BId不需要值,请NULL在 MySQL 中使用约束声明它,并使 C# 属性也可以为空:public int? BId.

如果您打算为 设置一个默认值BId,您可以使用该DEFAULT子句声明它。

如果你想B为每个创建一个新的A,这可以使用 table 上的触发器来完成A

于 2013-02-25T14:47:23.460 回答
1

外键实际上不是这样工作的。

您可以使用主键执行您所要求的操作,如果它是标识列,SQL Server 将为您设置主键。但是对于外键,你应该已经知道你想要的值。您应该已经有一个B您想要引用的现有实例——要么是那个,要么您应该在创建之前创建它A

如果您要求外键自动递增,您实际​​上并不想要外键,而是想要别的东西。您可能需要重新考虑您的表结构。

于 2013-02-25T14:46:03.047 回答