在我试图解释的时候,我甚至都不知道如何与我一起搜索这个。
我有两种模式:
public class Destinations
{
public int DestinationsID { get; set; }
public virtual Navigation Navigation { get; set; }
}
public class Navigation
{
public int NavigationID { get; set; }
public string ParameterName { get; set; }
public int ParameterValue { get; set; }
public string FriendlyURL { get; set; }
}
两者都有更多,但这些都是重要的一点。保存目的地时,我将Navigation ParameterName设置为“Destination”,将ParameterValue设置为DestinationID。
我无法将目的地映射到导航,因为导航根本不依赖于目的地。它可以将任何模型作为ParameterName,将ParameterValue作为该模型的ID(或者它们都可以为null,因为它只与页面相关而不是任何其他模型)。
因此,当我要么查看单个目的地或循环浏览列表时,我需要能够获得Navigation.FriendlyURL。这就是为什么我添加了公共虚拟导航导航{get;组; }。在我的映射类中,虽然我需要能够根据Destinations.DestinationID的“Destination”和ParameterValue的ParameterName获取导航。这就是我完全陷入困境的地方。
我假设我需要这样的东西:
this.HasRequired(d => d.Navigation)
.WithRequiredDependent(WHAT GOES HERE)
.Map(WHAT GOES HERE)
.WillCascadeOnDelete(false);
非常感谢任何帮助。
答案 0 :(得分:0)
如果您要在Navigation
中映射Destinations
属性,可以尝试这样的事情
this.HasRequired(d => d.Navigation)
.WithMany()
.WillCascadeOnDelete(false);
修改强> 您无法映射此关系,但您可以构建查询以使用手动关系修复来检索这两种关系。
var query = (from d in db.Destinations
join n in db.Navigations on d.DestinationsID equals n.ParameterValue
where n.ParameterName == "Destination"
select new { d, n }).ToList();
// Display joined groups.
foreach (var group in query)
{
group.d.Navigation = group.n;
}