首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HasRequired中的奇怪行为

HasRequired中的奇怪行为
EN

Stack Overflow用户
提问于 2015-09-23 13:43:44
回答 1查看 83关注 0票数 1

HasRequired状态的帮助

从此实体类型配置所需的关系。除非指定了此关系,否则无法将实体类型的实例保存到数据库中。数据库中的外键是不可空的.

我有一个不需要的字段,配置如下

代码语言:javascript
复制
public class BookingConfiguration : EntityTypeConfiguration<Booking>
    {
        public BookingConfiguration()
        {
            HasKey(ai => ai.BookingKey);

            ...

            HasRequired(b => b.Customer)
                .WithRequiredPrincipal();

            ToTable("Booking");
        }
    }

这当然很奇怪,因为不需要客户。但是,它既适用于空值,也适用于何时设置了customer。如果我换到

代码语言:javascript
复制
HasOptional(b => b.Customer)
    .WithOptionalPrincipal();

它失败了(已经从数据库获取了)

无效列名“预订_BookingKey”。

失败的代码

代码语言:javascript
复制
var existingBooking = await _context.DbSet<Booking>().FirstAsync(ai => ai.BookingKey == confirmCommand.BookingKey);

编辑:实体的结构是

代码语言:javascript
复制
public class Booking
{
   public Guid BookingKey { get; set; }
   ...
   public Customer Customer { get; set; }
}

public class Customer
{
   public Guid BookingKey { get; set; }
   ...   
}
EN

回答 1

Stack Overflow用户

发布于 2015-09-24 17:32:28

因为BookingKey既是预订的关键,也是客户的ForeignKey,所以在安装过程中尝试设置ForeignKey字段。

代码语言:javascript
复制
HasOptional(c => c.Customer)
     .WithOptionalPrincipal()
     .Map(m => m.MapKey("BookingKey"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32741343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档