我正在学习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);
}
答案 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,您应该检查视图模型并创建艺术家和流派。