我是ASP.Net MVC和Entity Framework的初学者。我坚持使用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
}
业务逻辑:
B也可以独立存在
但在某些情况下,例如让我们说当用户在UI中的文本框中输入“2”时。在那种情况下,我希望A将BId存储在其中。
表A中开始存在BId后,表A中不再存在。
现在我想设置这种关系的原因是当BId存储在A表中时,我需要确保它不是一些随机整数。我希望存储在A表中的BId确实存在于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: 如何确保当我在A表中时,它必须是B表中的PK 问题2: 我正在处理什么类型的实体关系? 1..0或1..1或其他什么?
修改
我想要类似的东西:
dBModelBuilder.Entity<A>()
.HasOptional(r=> r.B)
........
答案 0 :(得分:1)
无需明确配置此项。只需使A的FK属性可以为空,约定将创建您想要的映射。 EG:
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; }
}
在Fluent API中执行此操作将如下所示:
modelBuilder.Entity<A>()
.HasOptional(a => a.B)
.WithMany()
.HasForeignKey(a => a.BID);