我正在使用 Entity Framework 5,代码优先。
我有一个看起来像这样的 POCO:
public class Order
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Status Status { get; set; }
public Order()
{
this.Status = new Status() { Id = 1 }
}
}
这可以流畅地映射,例如:
public class OrderMap : EntityTypeConfiguration<Order>
{
public OrderMap()
{
ToTable("Order");
HasKey(x => x.Id);
Property(x => x.Id);
Property(x => x.Name).IsRequired();
HasRequired(x => x.Status)
.WithMany(x => x.Orders)
.Map(x => x.MapKey("StatusId"));
}
}
在数据库中,Order
表的默认值StatusId
设置为1
。
但是,当添加一个新的Order
,我得到这个错误:
违反 PRIMARY KEY 约束“Status_PK”。无法在对象“dbo.Status”中插入重复键。重复键值为 (1)
Status
如果我在ctor中删除分配Order
,那么我会得到这个:
无法将值 NULL 插入列“StatusId”、表“MyDatabase.dbo.Order”;列不允许空值。插入失败
如何设置外键属性的默认值?