2012-01-05 12 views
0

EFコードファーストは - モデルEF4.1モデル設計

私は2クラスあります

public class Alias 
{ 
    public int id { set; get; } 
    public string Name { set; get; } 
    public ICollection<Tweet> Tweets { set; get; } 
} 

public class Tweet 
{ 
    public int id {set;get;} 
    public Alias Author { set; get; } 
} 

をそれはさえずるクラスでAUTHOR_ID(FK)を作成します。それは2つのモデルの間に関係があるので、大丈夫です。でもAliasクラスでTweet_Id(FK)を作成しないのはどうしてですか?それともICollectionを使用しているからですか? TweetクラスでFKを作成するのはなぜですか?その逆はできません。また、私はモデルがどのように動作するかを理解しようとしています....

public class Alias 
{ 
    public int id { set; get; } 
    public string Name { set; get; } 
    public Tweet Tweets { set; get; } 
} 

public class Tweet 
{ 
    public int id {set;get;} 
    public Alias Author { set; get; } 
} 

を、私は以下のコードを試してみましたし、それが失敗したそのモデル

でFKを作成するために、EFを伝え何キーワード

どのようにいつFKを作成するのですか? ...私は簡単な説明を提供してください...事前にありがとう!

+0

あなたのやっているEntity Frameworkコードまずは、そうですか? – dknaack

+0

はい、正しいです。 – Ben

+1

これはリレーショナルデータベースの中心的な知識ですので、これらの概念を理解していない場合は、EFの使用をやめて、リレーショナルデータベースに関することを学びましょう。リレーショナル・コンセプトに対する基本的な理解がなければ、EFを正しく使用することはできません。 –

答えて

0

SQLでは、両方のテーブルに外部キーは必要ありません。 C#での方向性という概念はありません。

Tweetテーブルには、接続するエイリアスを示すIDが必要です。これから、そのエイリアスで作成されたすべてのツイートを簡単にクエリできます。

エイリアステーブルにTweet_Idがあった場合、同じ人が作成した2番目のツイートは一度設定されますか?

+0

Thx David、あなたの答えは、1。しかし、もし私が1対1であれば、誰がFKを持つだろうか? FKを含むモデルをどのように選択しますか?また、両方のモデルをどのように書くかというサンプルの例を提供することができれば(1〜0..1)、それは非常に役に立つでしょう... – Ben

+0

0..1:ありがとうございます地図。私はそれを試してみる必要があります。技術的には、どちらの側にでも外部キーを置くことができると思います。 SQLでは、エイリアステーブルのnull可能なTweet_Idをより明示的にすることができますが、EFはまだそれが何をするのかをまだよく分かりません。 例を得ようとすることはできますが、すぐに実際になると約束することはできません... –

関連する問題