【问题标题】:one-zero-one relation ef codefrist一零一关系 ef codefrist
【发布时间】:2016-10-01 11:25:45
【问题描述】:

我有 3 节课

public class StockDef
{
    public int Id { get; set; }
    public int StockType { get; set; }
    public virtual OfficeStock SayanStock { get; set; }
    public virtual AgentStock AgentStock { get; set; }
    //....
}

public class OfficeStock
{
    public virtual StockDef StockDef { get; set; }
    //....
}

public class AgentStock
{
    public virtual StockDef StockDef { get; set; }
    //......
}

每个 StockDef 对象肯定有(一个 OfficeStock 或一个 AgentStock)。
每个OfficeStock 肯定都有一个StockDef。
每个 AgentStock 肯定都有一个 StockDef。
如何在 EF 代码中首先通过流利的 API 实现这一点?
tnx

【问题讨论】:

  • 如果需要,您需要检查约束:一个officeStock 或一个AgentStock 用于StockDef,我认为,使用流利的Api 是不可能的。但您可以手动添加。检查这个link
  • tnx for response @iamnapo
    我应该怎么在数据库中的最终表?

标签: c# entity-framework poco ef-fluent-api


【解决方案1】:

你不能用fluent api配置StockDef(约束“只能编译一个属性”),你必须添加一个自定义验证实现IValidatableObject接口。

您还可以在数据库上添加一个约束(触发器?),这样您就可以避免其他人插入错误的记录。

另外,关于1-1的关系配置你可以看看这里 Code First migration when entities have cross references with foreign keys

【讨论】:

  • 为什么?你说 StockDef 不可能只有一个 OfficeStock 或 AgentStock?
  • 可能我没听懂。 StockDef 可以有一份 OfficeStock 和一份 AgentStock?我的意思是,StockDef.OfficeStockStockDef.AgentStock 都可以编译吗?
  • StockDef 可以有一个 OfficeStock 或一个 AgentStock
  • 我不认为你可以用fluent api配置这个约束。我认为您必须实施IValidatableObject 否则您可以拥有一个OfficeStock 和一个AgentStock。
猜你喜欢
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
相关资源
最近更新 更多