2017-03-23 17 views
0

これを行うには、流暢なAPIについていくつかの研究を行ってきましたが、それが道であるかどうかはわかりません。OnModelCreateはDBを再作成しますが、私は実際に必要なのは自分のアプリケーション内で私ができるようにしたいので、私は外部キーは、Fleets.OwnerId、それらの両方のために、この2つのテーブル2対1の関係EF

dbo.Fleets 
OwnerId (PK,uniqueidentifier,not null) 
ownerName (nvarchar(255),not null) 


dbo.UserAccount 
UserID  (PK,uniqueidentifier,not null) 
UserName  (nchar(20), null) 
SelectedFleet (FK,uniqueidentifier,null) 
PrimaryFleet (FK,UniqueIdentifier,null) 

とDBをしているしている、私のエンティティのための私のテーブルを関連付けるための方法です私のプライマリの艦隊にはSelectedFleetEFには艦隊を迎える。

私はvar v = dc.UserAccounts.Where(a => a.UserName == model.UserName).Include(d => d.Fleet).SingleOrDefault();を実行した場合ので、私は私の完全な結果を得ることになります

+0

は、[この](http://stackoverflow.com/a/5559300/1453651)を見てください、それが役立つかもしれ使用するユーザーの艦隊にアクセスします。 –

答えて

-1

私は個人的にDataAnnotationsを使用することを好みます。

その後
[Table("UserAccounts")] 
    public class UserAccounts 
    { 
     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 
     public string UserName { get; set; } 

     public virtual ICollection<Fleets> Fleets { get; set; } 
    } 

    [Table("Fleets")] 
    public class Fleets 
    { 
     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 
     public string Name { get; set; } 

     public virtual UserAccounts UserAccount { get; set; } 
    }  

あなたは

var v = dc.UserAccounts.Where(a => a.UserName == model.UserName).Include(d => d.Fleet).SingleOrDefault(); 
+0

しかし、それがどうやって私の問題を解決するのですか?アカウントごとに2つの異なる艦隊が必要です –

+0

したがって、UserAccountに多くのFleetsが必要な場合、これはOne-Oneの関係ではありません。それはOne - Manyになります。私はそれを表すコードを編集しました。 – niko619

+0

実際には2つ1対1 –