2017-03-18 16 views
0

こんにちは私のデータベースに電子メールのリストを保存しようとしていますが、リストを保存するのに問題があります。データベースにリストを保存するMVC

これは、モデル内の一覧です:

[Display(Name = "Mailing List")] 
public List<string> MailingList { get; set; } 

これは、私は、リストに新しい文字列電子メールを追加し、データベース

public ActionResult VenueMailingList(int id) 
{ 
    //Get UserID and Email 
    string UserId = User.Identity.GetUserId(); 
    string email = User.Identity.Name; 

    //Check if the user is logged in 
    if (UserId != null) 
    { 
     ViewBag.LoggedIn = true; 

     //Add the users email to this venues email mailing list 
     Venue venue = db.Venues.Find(id); 

     //If list is null, initlise it 
     if (venue.MailingList == null) 
     { 
      venue.MailingList = new List<string>(); 
     } 

     venue.MailingList.Add(email); 

     db.SaveChanges(); 
    } 
    return View(); 
} 
+0

実際の問題の詳細は入力していません。あなたがこれを実行すると、ある時点でエラーが発生していますか?もしそうなら、質問にその情報を追加できますか? –

+0

問題は、リストがデータベースに保存されていないということです –

+0

あなたのモデルクラス '[DataType(DataType.EmailAddress)]の中のRequiredの下でこれを使用してください。あなたがEFを使用していて、明らかにAspNetUsersログインテーブル、誰かが新しい登録簿(AspNetUsersテーブルに行を追加する)が自動的にあなたのMailingListテーブルを更新するためにトリガを使用するだけで、 – Edward

答えて

0

に保存しようとしているコントローラのメソッドでありますEntityFrameworkが変更を追跡し、それらの変更をDBに保存するように、DbContext内でデータベースの変更を行う必要があります。あなたは、次のようなコードが必要になります。http://www.entityframeworktutorial.net/EntityFramework4.3/add-entity-using-dbcontext.aspx

using (var context = new MyDbContext()) 
{ 
    Venue venue = context.Venues.Find(id); 

    //If list is null, initlise it 
    if (venue.MailingList == null) 
    { 
      venue.MailingList = new List<string>(); 
    } 

    venue.MailingList.Add(email); 

    context.SaveChanges(); 
} 

次のリンクはEntityFrameworkを使用する方法の偉大なチュートリアルがあります。

0

はこれを試してみてください:

if (venue.MailingList == null) 
{ 
      venue.MailingList = new List<string>(); 
} 

venue.MailingList.Add(email); 
venue.MailingList.Entry(email).State = EntityState.Added; // you need to add this statement 

db.SaveChanges(); 
0

addrangeメソッドを使用してください。

db.YourTable.AddRange(YourList) 
db.SaveChanges(); 
関連する問題