繁体   English   中英

EF Fluent API 是否允许将可选的非标准 FK 映射到非标准主键或使用非标准投影

[英]Will the EF Fluent API allow mapping an optional non-standard FK to a non-standard primary key or using non-standard projection

问题:我正在处理遗留代码,并且我试图引入一个相关实体,该实体在一个表中的 Code 列和单独的 Code 表之间具有松散定义的关系。 注意:未配置外键,引用基于基于字符串的“代码”而不是主键。

我目前正在失去宝贵的开销,因为这种关系不是隐含的,我基本上不得不将这种关系旁加载到主要模型中。 拥有数以千计的收藏,必须实现其成本高昂

一个例子:

public class Problem
{
    int Id
    string ProblemName
    string ProblemCode  <<< this is the foreign key dependency
}

public class Code 
{ 
    int Id
    string Code <<< this is the pseudo-primary key 
    string CodeDescription    
}

可能的解决方案 2:模型绑定 我已经翻阅了实体框架文档,我知道可以设置唯一的外键约束,但在每种情况下,据我所知,它总是引用显式主键主要的。

问题 1:EF Fluent API 是否允许将可选的非标准 FK 映射到非标准主键

可能的解决方案 2:在上下文调用中加载相关实体 这是不太理想的方法,但我目前正在探索这一点,使用 foreach 以这种方式填充松散连接的实体。 不幸的是,使用 Select 将其投影到现有组合中不起作用,因为实体是(叹气)变体子实体,而查询调用是抽象父实体的(EF 实体是“问题”,但 Select 需要类似“汽车问题”)。

问题 2:在不使用 SELECT 投影的情况下分配实体的推荐解决方案(我认为目前不存在)

EF Fluent API 是否允许将可选的非标准 FK 映射到非标准主键

是的。 EF 不在乎真正的PK 是什么。 当然,强烈建议在数据库中有一个唯一索引。 但在 EF 中,只需将您想要的任何键标记为实体键,您就可以将其用于导航属性。

例如

public class Code 
{ 
    int Id {get;set;}
    [Key]
    string Code {get;set;}
    string CodeDescription  {get;set;}
}

EF Core 支持备用键,但在 EF 6 中,每个实体类型只能有一个键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM