【发布时间】:2013-08-07 10:20:32
【问题描述】:
我正在使用 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)
如果我在 Order ctor 中删除对 Status 的分配,那么我会得到这个:
无法将值 NULL 插入列“StatusId”,表 'MyDatabase.dbo.Order';列不允许空值。插入失败
如何设置外键属性的默认值?
【问题讨论】:
标签: entity-framework orm entity-framework-5