2016-07-25 9 views
0

エンティティフレームワークでsqlserverを使用しようとしていましたが、AzureがAzure SQL Elastic dbの価格を引き上げたというメールが届きました。どんな方法でもmongodbに行きます。この流暢なapiをmongo文書に翻訳するのに役立つ必要がありますか? ?私は考え出した:1の関係mongodbのエンティティの1対1と多対多表現

public CourseMappings() 
       { 
        HasMany<User>(s => s.Student) 
         .WithMany(c => c.Course); 
       } 

public AddressMappings() 
      { 

       HasRequired(c => c.Student) 
       .WithRequiredDependent(u => u.Address); 
      } 


public StudentMapping() 
      { 

       HasRequired(c => c.Address) 
       .WithRequiredPrincipal(u => u.Student); 

      } 

ガット3つのテーブル、学生、アドレスやコースは、私はMongoDBの中でこれをモデル化しますどのように私は、アドレスが1のための学生に埋め込むことがわかっています。質問は1つの文書(例)で行うことができますか、コースは学生との多対多の関係のためにStudentIdを持つ別の文書になりますか?

+0

あなたのクエリが何パターンをACCESです - :コレクション・スキーマのデータモデルは、以下のようなものでしょうか?アプリケーションが学生やコースによってデータにアクセスするかどうか – notionquest

+0

学生によるアクセスが可能です。 –

答えて

0

MongoDBのデータモデルは、アプリケーションの「クエリアクセスパターン」に非常に依存しています。私があなたから理解しているように、アプリケーションは生徒IDまたは生徒データによってデータにアクセスします。私はコレクションを1つしか持たないことをお勧めします。

{ 
    "_id" : ObjectId("57971c2b4895ddf87c8747ea"), 
    "studentid" : 1, 
    "studentname" : "name", 
    "address" : { 
     "name" : "street name", 
     "addressline1" : "line 1", 
     "addressline2" : "line 2", 
     "post code" : "GRUHFYN" 
    }, 
    "courses" : [ 
     { 
      "courseid" : 1, 
      "coursename" : "science" 
     }, 
     { 
      "courseid" : 2, 
      "coursename" : "english" 
     }, 
     { 
      "courseid" : 3, 
      "coursename" : "Maths" 
     } 
    ] 
} 

Student Model with data types

+0

さて、アドレスは 'List <>'の型になります。コースはどのようにPOCOとして表されますか? –

+0

ドキュメント全体をPOCOして、将来私のような人を救いますか? –

+0

アドレスはリストではありません。 MongoDB用語では、それはちょうどサブ文書です。コースは、複数のコースに登録できる生徒のリストです。 MongoDBにはRDBMSと同様の制約コンセプトは存在しないことに注意してください。あなたが提案したようにPOCOをまとめることができるかどうかはわかりません。私は、各フィールドのMongoDBデータ型を添付しました。 – notionquest

関連する問題