2017-02-09 20 views
0

これは私の最初の投稿ですので、正しい手順に従わなかった場合は私をよろしくお願いします。 また、私は今週初めてEF-Codeを学び始めたので、私はとても新しく、stackoverflowのすべてのソリューションを理解することは実際にはありません。テーブルの外部キーが2つのテーブルの1つを指しています

問題: 私は3つのクラスを持っています:ユーザー、テナントとダッシュボード。
ダッシュボードは、ユーザーまたはテナントのいずれかにしか使用できません。 つまり、ユーザーにはダッシュボードがあり、テナントにはダッシュボードがあります。 ユーザーとダッシュボードの間には常に1対1の関係があります。 テナントとダッシュボードについても同じことが言えます。

これらの関係を作成するにはどうすればよいですか?

私は、多くのデータ注釈方法と流暢なAPIメソッドを読んだことがありますが、それをどうやって取得するかについてはまだ唖然としています。以下のユーザーとテナントの両方で

public class User 
{ 
    [Key] 
    public int ID { get; set; } 

    public int TenantId { get; set; } 
    public virtual Tenant Tenant { get; set; } 
} 

public class Tenant 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

public class Dashboard 
{ 
    [Key] 
    public int DashboardId { get; set; } 
    public string Description { get; set; } 

} 
+0

を持っています。しかし、あなたのユーザクラスにはテナント用のナビゲーションプロパティがあり、ダッシュボード用のものはありません。 –

+0

はい、これは本当に2つのクラスの例に過ぎません。データアノテーションが機能しなくなったため、データアノテーションを削除しました。私は「未完成のクラス」の例を挙げることができ、誰かが「それらを埋める」方法について私を助けてくれることを期待しました。希望は意味をなさない。 – SlapChip

+0

あなたのケースでは、ユーザーとテナントの両方にダッシュボードの外部キーが割り当てられます。ダッシュボードの表データがユーザーの前に作成されていることを前提とします。 – Pavvy

答えて

0

あなたは、ユーザーがダッシュボードとの1対1の関係を持っていることを言っている1つのダッシュボード

public class User 
{ 
    public int UserId {get; set;} 
    public virtual Dashboard Dashboard {get; set;} 
} 

public class Tenant 
{ 
    public int TenantId {get; set;} 
    public string Name {get; set;} 
    public virtual Dashboard Dashboard {get; set;} 
} 

public class Dashboard 
{ 
    public int DashboardId {get; set;} 
    public string Description {get; set;} 
} 
+0

こんにちは。遅い返事をして申し訳ありません。今日はこれをテストするだけだ。問題は、マイグレーションを追加するときに次のエラーが発生します。 "タイプ 'BOF365WebApp.Models.User'と 'BOF365_Solution.Models.XC365Core.Dashboard.Dashboard'の間の関連付けの主な終了を判別できません。この関連付けの適切な設定は、流暢なAPIまたはデータアノテーションのどちらかの関係を使用して明示的に設定する必要があります。 – SlapChip

関連する問題