对HasRequired状态的帮助
从此实体类型配置所需的关系。除非指定了此关系,否则无法将实体类型的实例保存到数据库中。数据库中的外键是不可空的.
我有一个不需要的字段,配置如下
public class BookingConfiguration : EntityTypeConfiguration<Booking>
{
public BookingConfiguration()
{
HasKey(ai => ai.BookingKey);
...
HasRequired(b => b.Customer)
.WithRequiredPrincipal();
ToTable("Booking");
}
}这当然很奇怪,因为不需要客户。但是,它既适用于空值,也适用于何时设置了customer。如果我换到
HasOptional(b => b.Customer)
.WithOptionalPrincipal();它失败了(已经从数据库获取了)
无效列名“预订_BookingKey”。
失败的代码
var existingBooking = await _context.DbSet<Booking>().FirstAsync(ai => ai.BookingKey == confirmCommand.BookingKey);编辑:实体的结构是
public class Booking
{
public Guid BookingKey { get; set; }
...
public Customer Customer { get; set; }
}
public class Customer
{
public Guid BookingKey { get; set; }
...
}发布于 2015-09-24 17:32:28
因为BookingKey既是预订的关键,也是客户的ForeignKey,所以在安装过程中尝试设置ForeignKey字段。
HasOptional(c => c.Customer)
.WithOptionalPrincipal()
.Map(m => m.MapKey("BookingKey"));https://stackoverflow.com/questions/32741343
复制相似问题