Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动增量和SQL';身份_C#_Asp.net_Mysql_Sql_Asp.net Mvc 4 - Fatal编程技术网

C# 自动增量和SQL';身份

C# 自动增量和SQL';身份,c#,asp.net,mysql,sql,asp.net-mvc-4,C#,Asp.net,Mysql,Sql,Asp.net Mvc 4,这个链接回答了我关于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;} p

这个链接回答了我关于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;}
}
在初始化类的对象期间,会出现一个错误,说明
BId不能为null
在MySQL中,我可以将一列声明为
AUTO_INCREMENT
,然后将表初始化为

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

假设
col1
声明为自动递增。我想对类A中的
BId
做一些类似的操作,这样我就不必为它设置整数。

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

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


如果您要求外键自动递增,那么您实际上并不需要外键,而是需要其他外键。您可能需要重新考虑您的表结构。

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

如果要为
BId
设置默认值,可以使用
default
子句进行声明


如果要为每个
a
创建一个新的
B
,可以使用表
a

Hi@asp上的触发器来完成,是否使用linq2sql?实体框架?其他ORM?这个问题不完整。