(注 - データベースとテーブルは制御できません)私の問題の例を与える外部キーを持たないエンティティフレームワークの関係
:
表Aは、その上にID(PK)及びCREATEDATE 表BがそれにID(PK)及びA_ID
A_ID外部キーが、表ではありませんていましたBはcreate_dateをテーブルAから取得する必要があります。これはどのようにEntity Frameworkで行いますか?これが関連しているだけ
編集のいずれかを持つことができます0またはBとBの多くを持つことができる場合
わからない:私が試した:
編集2流暢APIを使用して言及するのを忘れました2つのテーブルをマッピングします。
私はBのエンティティモデルにパブリック仮想A a {get; set}を追加しました。私はHasRequired(x => xA)、HasRequired(x => xA)、HasForeignKey(x => xA)などいくつかの異なることを試しました。 > x.A_ID)(ただし、多くは間違っていますが、外来キーを指定する方法、外来キーがないこともわかりました)。私はまた、HasKey(x => x.A_ID)を追加しましたが、それは私にはとにかく思われませんでした。
基本的に、すべてのタイプのハッシュとハッシュを試しました。私はエンティティフレームワークの流暢な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