2013-02-25 64 views
1

autoincrement column in SQL database自动增量和SQL的身份

链接回答我的疑问,在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;} 
} 

表示2代表在初始化类的一个对象,错误发生说BId can not be null 在MySQL,我可以声明一个列为AUTO_INCREMENT,然后将表初始化为如

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

suppos col1被声明为自动增量。我想在类A中做类似BId的事情,这样我就不必为它设置一个整数。

+1

Hi @ asp-asp,你在用linq2sql吗?实体框架?其他ORM?这个问题不完整。 – 2013-02-25 14:45:17

+0

嗯,我正在使用EF – 2013-02-25 16:43:29

回答

1

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

你可以按照你要求的主键进行操作,如果它是一个标识列,SQL Server将为你设置主键。但是对于一个外键,你应该已经知道你想要的价值。您应该已经有一个现有的B实例,您可以参考 - 或者您应该在创建A之前创建它。

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

1

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

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

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