2013-02-25 57 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上的觸發器完成此操作。