如何以零至零或一对一的关系设置流利的API关系



我是ASP.NET MVC和实体框架的初学者。我被困在使用Fluent API的关系中。

所以,我有两个模型:

模型A

Public Class A
{
    [Key]
    public int AId {get; set;}
    public string AName {get;set;}
}

模型B

Public Class B
{
   [Key]
   public int BId {get; set;}
   public string BName
}

业务逻辑:

  1. A可以独立存在
  2. b也可以独立存在

  3. 但是在某些情况下,例如,在用户在UI中输入" 2"时,请说。在这种情况下,我希望A存储在其中。

  4. 在表A中出现出价后,它就不能再次存在于表A 中。

现在,我要设置这种关系的原因是当投标存储在表中时,我需要确保它不是随机的整数。我希望承诺出价存储在表中确实确实存在于b表中。

我的想法:

我需要Optional Unique Foreign Key Relationship。但是我不确定如何在Codefirst Fluent API方法中实现它

以下是我到现在的。

模型A

Public Class A
{
    [Key]
    public int AId {get; set;}
    public string AName {get;set;}
    public int BId {get;set;}
    public virtual B {get;set;}
}

问题1:如何确保每当我在桌子中竞标时,都必须是B桌上的PK问题2: 我正在处理哪种类型的实体关系?1..0或1..1或其他东西?

编辑

我想要类似的东西:

dBModelBuilder.Entity<A>()
                    .HasOptional(r=> r.B) 
                    ........

无需明确配置。只需使A的fk属性变名,惯例将创建所需的映射。例如:

public class A
{
    public int AID { get; set; }
    public string Name { get; set; }
    public int? BID { get; set; }
    public virtual B B { get; set; }
}
public class B
{
    public int BId { get; set; }
    public string Name { get; set; }
}

在流利的API中执行此操作,看起来像:

        modelBuilder.Entity<A>()
            .HasOptional(a => a.B)
            .WithMany()
            .HasForeignKey(a => a.BID);

相关内容

  • 没有找到相关文章

最新更新