首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体配置:如何正确配置类和实体配置

实体配置:如何正确配置类和实体配置
EN

Stack Overflow用户
提问于 2019-01-11 14:22:32
回答 1查看 62关注 0票数 0

我的问题是,我是否在类和实体配置中做了正确的关系

我应该在哪里做1: n的关系?在船班还是InfoAppointment班?

我是在InfoAppointment做的,但我很怀疑。

InfoWeather,它将始终与InfoAppointment一起注册。InfoWeather不在其他地方注册,因此对于每个InfoAppointment条目记录,我可以拥有一个infoWeather,而且infoWeather也可以是可选的。

我也对0或1的配置有疑问,对吗?

我的类InfoAppointment只能有一个Boat

我的Boat类可以在多个InfoAppointment中。

我的类InfoAppointment可以有零个或一个InfoWeather

我的类InfoWeather可以有一个或零个InfoAppointment

代码语言:javascript
复制
public  class InfoAppointment : Entity
{
  public Guid Boat_Id { get; set; }
  public virtual Boat Boat { get; set; }
  public virtual InfoWeather infoWeather { get; set; }
}

public  class InfoWeather : Entity
{
  public virtual InfoAppointment InfoAppointment { get; set; }
}

public  class Boat : Entity
{
 public virtual ICollection<InfoAppointment> InfoAppointment { get; set; }
}



public class InfoAppointmentConfig : EntityTypeConfiguration<InfoAppointment>
{
  HasRequired(c => c.Boat)
              .WithMany(c => c.InfoAppointment )
              .HasForeignKey(c => c.Boat_Id);

   HasOptional(c => c.InfoWeather )
            .WithOptionalDependent(c => c.InfoAppointment );
}

public class BoatConfig : EntityTypeConfiguration<Boat>
{
}

public class InfoWeatherConfig : EntityTypeConfiguration<InfoWeather >
{
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 15:09:47

您的要求如下:

  1. 我的类InfoAppointment只能有一个Boat
  2. 我的类Boat可以在多个InfoAppointment中。
  3. 我的类InfoAppointment可以有零个或一个InfoWeather
  4. 我的类InfoWeather可以有一个或零个InfoAppointment

然后将InfoAppointmentBoatInfoWeather之间的关系写成如下:

代码语言:javascript
复制
public  class InfoAppointment : Entity
{
  [Key]
  public Guid InfoAppointmentId { get; set; }

  [ForeignKey("Boat")]
  public Guid BoatId {get; set;}

  // other properties

  public virtual Boat Boat { get; set; }

  public virtual InfoWeather infoWeather { get; set; }
}

public  class Boat : Entity
{
   public Guid BoatId {get; set;}

   // other properties

   public virtual List<InfoAppointment> InfoAppointments { get; set; }
}

public  class InfoWeather : Entity
{
  [Key,ForeignKey("InfoAppointment")]
  public Guid InfoAppointmentId { get; set; }

  // other properties

  public virtual InfoAppointment InfoAppointment { get; set; }
}

直到第三项要求,一切都好。你的第四个要求

  1. 我的类InfoWeather可以有一个或零个InfoAppointment

一定要确保你真的想要这个。然后,您必须按以下方式更新InfoAppointmentInfoWeather实体:

代码语言:javascript
复制
public  class InfoAppointment : Entity
{
  public Guid InfoAppointmentId { get; set; }

  [ForeignKey("Boat")]
  public Guid BoatId {get; set;}

  [ForeignKey("InfoWeather")]
  public Guid InfoWeatherId {get; set;}


  // other properties

  public virtual Boat Boat { get; set; }

  public virtual InfoWeather InfoWeather { get; set; }
}


public  class InfoWeather : Entity
{
  [Key]
  public Guid InfoWeatherId { get; set; }

  [ForeignKey("InfoAppointment")]
  public Guid InfoAppointmentId { get; set; }

  // other properties

  public virtual InfoAppointment InfoAppointment { get; set; }
}

现在必须使用FluentAPI指定主体实体如下:

代码语言:javascript
复制
modelBuilder.Entity<InfoAppointment>()
   .HasOptional(x => x.InfoWeather)
   .WithOptionalPrincipal(x => x.InfoAppointment)
   .Map(a => a.MapKey("InfoWeatherId"));

希望这对你有用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54148387

复制
相关文章

相似问题

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