gpt4 book ai didi

c# - 使用 Entity Framework 4.1 Fluent API 在非主键字段上创建关联

转载 作者:可可西里 更新时间:2023-11-01 07:46:46 24 4
gpt4 key购买 nike

我们正在使用 EF 4.1 和流畅的 API 从遗留数据库中获取数据(我们不允许更改)。我们在创建两个表之间的关系时遇到问题,其中相关列不是主键和外键。

对于下面的类,我们如何配置 ReportRunStat 之间的一对多关系,这样 Report.RunStats 会返回 ReportCode 字段相等的所有 RunStat 实体?

public class Report
{
[Key]
public int ReportKey { get; set; }
public string Name { get; set; }
public int ReportCode { get; set; } // Can we associate on this field?
public virtual ICollection<RunStat> RunStats { get; set; }
}

public class RunStat
{
[Key]
public int RunStatKey { get; set; }
public int ReportCode { get; set; }
public DateTime RunDate { get; set; }
}

基本上,我想使用 Fluent API 配置 EF,使其将 Report.ReportCode 视为外键,将 RunStat.ReportCode 视为主键.

最佳答案

这是不可能的。 EF 中的关系遵循与数据库中完全相同的规则。这意味着主表必须具有唯一标识符,该标识符被从属表引用。在数据库的情况下,标识符可以是主键或主表的唯一列。否则不是有效关系。

Entity Framework 不支持唯一键。如果您想在 ReportRunStat 之间建立一对多关系,您的从属表 (RunStat) 必须包含值为 的列>Report.ReportKey。没有其他方法可以使其自动生成 - 否则您必须简单地将其设为自定义属性并在需要时从 Entity Framework 手动填充它。

关于c# - 使用 Entity Framework 4.1 Fluent API 在非主键字段上创建关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com