我有一个表,其主键为 ID,此字段不是标识列。我对 Entity Framework 6 的迁移是 CreateTable( \'dbo.Action\', c => new { ID = c.Int(nulla...
我有一张表,其主键为 ID,此字段不是标识列。我的 Entity Framework 6 迁移如下
CreateTable(
"dbo.Action",
c => new
{
ID = c.Int(nullable: false, identity: false),
ActionName = c.String(maxLength: 50),
})
.PrimaryKey(t => t.ID);
这一切对我来说看起来相当简单。然后我有一个方法来播种一些数据:
public static void Seed(this DbSet<Action> entitySet)
{
MainContext dbCtx = DataRepositoryBase<Action>.GetContext(entitySet) as MainContext;
if (dbCtx != null)
{
entitySet.Add(new Action()
{
ID = 1,
ActionName = "Test"
});
}
}
就在这时我收到一个错误
\'无法将值 NULL 插入到表 'dbo.Action' 的列 'ID' 中;列不允许为空。INSERT 失败。\r\n该语句已终止\'
如您所见,我显然为 ID 列提供了一个值。我怀疑 Entity Framework 期望 ID 是一个 Identity 列
实体类非常简单
[DataContract]
public class Action
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string ActionName { get; set; }
}