2016-07-29 6 views
-3

私はページ上にフォームを持っています。既知のフィールドと未知のフィールドをdbに保存

フォームは3つの既知のフィールドが含まれます。 セックス 年齢 StoreId

、私はこれらのフィールドを保存したいID

に続くすべてが「Question_」で始まるフィールドの数が不明私のテーブル(MyTable)in db(MyDb)。 ID(Int)、性別(String)、年齢(Int)、店舗ID(Int)、質問ID(Int)、回答(Int)

誰かが私を助けてもらえますか?

私が得た:

公共のActionResultインデックス(質問モデル、FormCollectionフォーム) {

 var Age = form["age"]; 
     var StoreId = form["storeId"]; 
     var Sex = form["sex"]; 

、その後、私は挿入の準備ができて、最後の「Questions_」を取得し、配列を使用すると思います?

+0

まず、データベースを正規化してみてください。 –

+0

何を試しましたか – anand

+0

間違っています。あなたのテーブルは最初の4つの列しか持たず、questionIDとIDで結合された別々のテーブルに質問と回答を入れてください – Steve

答えて

0

とすることができます。
1番目のテーブルを既知のフィールド用に作成し、もう1つは未知のフィールド(質問と回答)を最初のテーブルのプライマリID(外部キーを正確に)とともに格納します。
2nd。それに応じてレコードを保存し、関連するクラッシュ操作を実行することができる。

+0

ありがとうございます。 2つのテーブル...それを得ました! – JonesDr

+0

しかし、どうすればプログラムでこれを回避できますか: public ActionResult Index(Questions model、FormCollectionフォーム) { var Age = form ["age"]; var StoreId =フォーム["storeId"]; var Sex = form ["sex"]; そして、私は最後の "Questions_"を挿入する準備ができている配列を使用していると思いますか? – JonesDr

+0

はこのリンクを参照してください(http://stackoverflow.com/questions/23125087/adding-textbox-dynamically-and-save-values-to-the-database-in-asp-net-mvc) – anand

0

2つのテーブルを作成します。 1つは既知の列を格納するためのもので、もう1つは可変的な質問のためのものです。

最初は次のようになります(と言う人)

personPrimaryKey(Int), Sex(String), Age(Int), StoreID(Int) 

し、次のように第二(と言うQA)

qaPrimaryKey(Int), personPrimaryKey(Int), QuestionID(Int), Answer(Int) 
その後

、あなたは、あなたを挿入する必要がある場合セックス、年齢、StoreIDをPersonテーブルに挿入すると、personPrimaryKeyの主キーが返されます。

次に、personPrimaryKeyに対するすべての質問と回答をQAテーブルに挿入します。これにより、1人あたりの質問と回答の数を少なくすることができます。

これを問い合わせるための構造体は、SQL Joinと呼ばれ、読み上げる必要があります。

関連する問題