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
做类似的事情,这样我就不需要为它设置整数。
答案 0 :(得分:1)
这不是真正的外键如何工作。
您可以使用主键执行您要求的操作,如果SQL Server是标识列,则SQL Server将为您设置主键。但对于外键,您应该已经知道了所需的值。您应该已经有一个想要引用的B
的现有实例 - 或者您应该在创建A
之前创建它。
如果你要求外键自动递增,你真的不想要外键,你想要别的东西。您可能想重新考虑表格结构。
答案 1 :(得分:1)
如果BId
不需要值,请在MySQL中使用NULL
约束声明它,并使C#属性也可以为空:public int? BId
。
如果您打算为BId
设置默认值,可以使用DEFAULT
子句声明它。
如果您想为每个B
创建一个新的A
,可以使用表A
上的触发器来完成此操作。