我是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
}
业务逻辑:
- A可以独立存在
b也可以独立存在
但是在某些情况下,例如,在用户在UI中输入" 2"时,请说。在这种情况下,我希望A存储在其中。
在表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);