Sql 代码首先创建不带标识列的表[Key]
我创建类并添加迁移。所有具有基本属性的类的外观如下所示:Sql 代码首先创建不带标识列的表[Key],sql,ef-code-first,migration,identity,entity-framework-migrations,Sql,Ef Code First,Migration,Identity,Entity Framework Migrations,我创建类并添加迁移。所有具有基本属性的类的外观如下所示: public class CustomersInquiries : BaseModel { [Key] public int CustomersInquiryId { get; set; } } BaseModel-是我的自定义字段(addedBy、addedDate等) 不久前,我为我的数据库添加了许多表。生成create all表witch identity NO的迁移代码,键不会
public class CustomersInquiries : BaseModel
{
[Key]
public int CustomersInquiryId { get; set; }
}
BaseModel-是我的自定义字段(addedBy、addedDate等)
不久前,我为我的数据库添加了许多表。生成create all表witch identity NO的迁移代码,键不会自动递增
我尝试在我的模型或模型创建中创建新的迁移切换(无混合):
或
modelBuilder.Entity()
.Property(c=>c.CustomersInquiryId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
没有效果。迁移代码生成空的
如何修复我的数据库
编辑:
我有:
SELECT i.name AS IndexName, OBJECT_NAME(ic.OBJECT_ID) AS TableName,
COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName,
ident.seed_value, ident.increment_value, ident.last_value
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.OBJECT_ID = ic.OBJECT_ID
AND i.index_id = ic.index_id
LEFT OUTER JOIN sys.identity_columns AS ident
ON i.object_id = ident.object_id
WHERE i.is_primary_key = 1 AND OBJECT_NAME(ic.OBJECT_ID) <> N'__MigrationHistory'
选择i.name作为IndexName,选择OBJECT\u name(ic.OBJECT\u ID)作为TableName,
列名称(ic.OBJECT\u ID,ic.column\u ID)作为列名称,
标识种子值、标识增量值、标识最后一个值
从sys.index作为i
内部连接sys.index_列作为ic
在i.OBJECT\u ID=ic.OBJECT\u ID上
i.index_id=ic.index_id
左侧外部联接系统标识\u列作为标识
在i.object_id=ident.object_id上
其中i.is_primary_key=1和OBJECT_NAME(ic.OBJECT_ID)N“迁移历史”
看到这个我知道如何添加到现有表中。但我不喜欢在代码中首先标记列属性[Key]和未在db中生成的标识列。我以为您的问题是关于将现有列更改为标识的,迁移不会解决这个问题。你需要在链接中使用技巧。不确定它们最初为什么没有添加为标识,因为整数键的默认约定是使用标识。
modelBuilder.Entity<CustomersInquiries>()
.Property(c => c.CustomersInquiryId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
SELECT i.name AS IndexName, OBJECT_NAME(ic.OBJECT_ID) AS TableName,
COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName,
ident.seed_value, ident.increment_value, ident.last_value
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.OBJECT_ID = ic.OBJECT_ID
AND i.index_id = ic.index_id
LEFT OUTER JOIN sys.identity_columns AS ident
ON i.object_id = ident.object_id
WHERE i.is_primary_key = 1 AND OBJECT_NAME(ic.OBJECT_ID) <> N'__MigrationHistory'