插入两个没有关系的表

时间:2014-06-15 13:19:51

标签: c# linq asp.net-mvc-4

我正在学习LINQ,并且想知道如何使用LINQ将INSERT分成两个不同的表并且没有任何关系。它甚至可能吗?

我正在添加到这样的一个表中。我怎样才能添加到第二个表中?

第二张表,

  

GenreId

     

姓名

     

说明

代码,

[HttpPost]
public ActionResult Create(Artist artist)
{
   if (ModelState.IsValid)
   {
      _db.Artists.Add(artist);
      _db.Genres.Add(new Genre { GenreId = 1, Name = "Some Genre", Description = "Trying to add second table" }); // how can i add the genre object here
      _db.SaveChanges();
      return RedirectToAction("Index", new { id = artist.ArtistId });
   }

   return View(artist);
}

请注意,我的View强类型为Artist类。

我的观点,

@model EntityFrameWorkDBFirst.Models.Artist


@Html.TextBoxFor(model => model.Name)
@Html.TextBoxFor(model =>model.Genres) // how to get this working

我的模特课,

public partial class Artist
{
    public Artist()
    {
        this.Albums = new HashSet<Album>();
        this.Genres = new HashSet<Genre>();
    }

    public int ArtistId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Album> Albums { get; set; }
    public virtual ICollection<Genre> Genres { get; set; }
}

元组相关的建议并没有奏效。也许我错过了什么。

@model Tuple<EntityFrameWorkDBFirst.Models.Artist, EntityFrameWorkDBFirst.Models.Genre>

    <legend>Create a Artist</legend>

    @Html.TextBoxFor(model => model.Item1.Name)

    <h2>Genre</h2>
    @Html.TextBoxFor(model => model.Item2.Name)
    @Html.TextBoxFor(model => model.Item2.Name)

    <p>
        <input type="submit" value="Create" />
    </p>

控制器代码:

[HttpPost]
public ActionResult Create(Artist artist, Genre genre)
{


    if (ModelState.IsValid)
    {
        _db.Artists.Add(artist);
        _db.Genres.Add(genre);
        _db.SaveChanges();
        return RedirectToAction("Index", new { id = artist.ArtistId });
    }
    return View(artist);

}

1 个答案:

答案 0 :(得分:2)

您混合了域模型和视图模型。

这是一个很大的错误,你应该只在视图上使用viewmodel。

您应该创建视图模型:

public class CreateArtistViewModel
{
    public string ArtistName { get; set; }
    public int? Genres { get; set; } // if you provide chooser for user
    public string GenresName { get; set; } // if user can enter new genre
    public string GenresDecription { get; set; } // if user can enter new genre

    public IList<Genre> Genres { get; set; }
}

在后期操作中,如果用户创建新的gener,您应该检查视图模型并创建艺术家和流派。