我有一个名为Id的整数属性模型,当我进行迁移时,该属性不会将Id属性生成为Identity。
这是Fluent API(一对零/一个关系)配置。
Property(fv => fv.Id) //I just put this property to summarize
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("Codigo");
HasOptional(fv => fv.Presupuesto)
.WithOptionalDependent(p => p.FacturaVenta)
.Map(m => m.MapKey("PresupuestoCodigo"));
在进行迁移时,迁移以这种方式显示:
public override void Up()
{
CreateTable(
"dbo.FacturaVentas",
c => new
{
Codigo = c.Int(nullable: false), //Why is not Identity?
PresupuestoCodigo = c.Int(),
})
.PrimaryKey(t => t.Codigo)
.ForeignKey(t => t.PresupuestoCodigo)
.Index(t => t.Codigo)
}
这些是我的模特
public class FacturaVenta
{
public int Id { get; set; }
public Presupuesto Presupuesto { get; set; }
}
public class Presupuesto
{
public int Id { get; set; }
public FacturaVenta FacturaVenta { get; set; }
}
我该如何解决?
答案 0 :(得分:0)
今天只是我自己来解决这个问题,似乎有时Entity Framework并不能确定自动生成了列。您可以使用值为DatabaseGenerated
的属性DatabaseGeneratedOption.Identity
强制Entity Framework在迁移中添加identity: true
值。
using System.ComponentModel.DataAnnotations.Schema;
namespace MyApp {
public class MyEntity {
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
}
如果实体之间的关系为零/一对一,则还可以将相关实体的ID设置为Key属性
using System.ComponentModel.DataAnnotations;
namespace MyApp {
public class MyForeignEntity {
public int Id { get; set; }
}
public class MyEntity {
[Key]
public int ForeignId { get; set; }
public virtual MyForeignEntity Foreign { get; set; }
}
}
在这种情况下,该ID已设置为可以正常工作。