自动增量和SQL的身份

时间:2013-02-25 14:39:58

标签: c# asp.net mysql sql asp.net-mvc-4

autoincrement column in SQL database

该链接使我怀疑SQL中是否存在自动增量。

我目前的问题是这样的,

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

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被声明为自动增量。我想在A类中使用BId做类似的事情,这样我就不需要为它设置整数。

2 个答案:

答案 0 :(得分:1)

这不是真正的外键如何工作。

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

如果你要求外键自动递增,你真的不想要外键,你想要别的东西。您可能想重新考虑表格结构。

答案 1 :(得分:1)

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

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

如果您想为每个B创建一个新的A,可以使用表A上的触发器来完成此操作。