(注意 - 我无法控制数据库及其表格)。无外键约束的实体框架关系
给出我的问题的一个例子:
表A上有ID(PK)和CREATEDATE 表B上有ID(PK)和A_ID
A_ID不是外键,但表B需要从表A获取create_date。我如何在Entity Framework中执行此操作?
不知道这是否是相关的,但一个可以有0个或多个B和B只能有一个
编辑之一:忘记用流利的API提
编辑2:我已经试过映射这两个表。
我在B的实体模型上添加了public virtual A {get; set}。 (x => xA).WithOptional()和HasRequired(x => xA).WithMany()。HasForeignKey(x => xA)返回实体配置, > x.A_ID)(即使有很多错误,但它是我看到如何指定外键的唯一方式,也知道没有外键)。我还添加了HasKey(x => x.A_ID),但对我来说这似乎不正确。
基本上,我尝试了每种类型的Has和With。我对于实体框架流畅的api仍然很陌生,但是我搜索了互联网,发现了类似的问题,但是并不足以帮助我想出答案。大多数情况下,我发现'这是不可能的'类型的答案。
就加入而言,纠正我,如果我错了,这不是流利的API,它不是互相映射表?我会加入我的方法内的表?
编辑3:删除实体模型和实体配置到目前为止,不必要的东西和事物名称变更(但除此之外,它是完全准确)
public class A
{
/// <summary>
/// ID
/// </summary>
public virtual int ID { get; set; }
/// <summary>
/// Relationship to B
/// </summary>
public virtual B b { get; set; }
}
public class B
{
/// <summary>
/// ID of B
/// </summary>
public virtual int ID { get; set; }
/// <summary>
/// Name of B
/// </summary>
public virtual string Name { get; set; }
/// <summary>
/// DateTime B is created
/// </summary>
public virtual DateTime? DateTime { get; set; }
}
public AConfiguration()
{
Property(x => x.ID).HasColumnName("a_id");
Property(x => x.B_ID).HasColumnName("b_id");
HasKey(x => x.ID);
ToTable("a", "safe");
}
public BConfiguration()
{
Property(x => x.ID).HasColumnName("b_id");
Property(x => x.DateTime).HasColumnName("b_datetime");
HasKey(x => x.ID);
ToTable("b", "safe");
}
所以你想要一个约束,但不是在数据库上? – Stefan
我认为答案是肯定的。我想把a_id当作外键,即使数据库没有(它应该是,但由于某种原因,它不是这样设置的)。 – sam
你尝试过什么吗?如果没有,你应该。如果是的话,你应该告诉我们什么不按预期工作。 – Tipx