2017-05-26 9 views
0

(注 - データベースとテーブルは制御できません)私の問題の例を与える外部キーを持たないエンティティフレームワークの関係

表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"); 
    } 
+0

したがって、制約は必要ですがデータベースでは必要ありませんか? – Stefan

+0

私はこれに対する答えが「はい」だと思います。私はa_idを外部キーとして扱いたいと思っていますが、データベースはそうではありません(何らかの理由でそれが設定されていないはずです)。 – sam

+0

まだ試しましたか?もしそうでなければ、あなたはすべきです。はいの場合は、期待どおりに動作しないことを教えてください。 – Tipx

答えて

0

不要なもので、これまでのエンティティモデルとエンティティの構成は、除去され、物事の名前が変更された(しかし、それ以外の場合は完全に正確です)ナビゲーションプロパティで、に外部データベースを持っているサンプルデータベースを作成し、そこからコードファーストモデルを生成してみてください。それはあなたに適切な構成を示すはずです。

+0

それは役に立ちそうです、アドバイスをいただきありがとうございます! – sam

関連する問題