Я бы хотел заполнить список предметов некоторыми пунктами по умолчанию
public class Data
{
[Key]
public int Id { get; protected set; }
public List<Item> Items { get; set; } = new List<Item>(4) { new Item(), new Item(), new Item(), new Item() };
public DateTime CreationDate { get; protected set; }
public Question()
{
CreationDate = DateTime.Now;
}
}
public class Item
{
[Key]
public int Id { get; protected set; }
public string Text { get; set; } = "";
}
У меня есть два метода в моем контроллере:
public ActionResult add(Data data)
{
if (ModelState.IsValid)
{
_db.Data.Add(data);
_db.SaveChanges();
}
return RedirectToAction("getData", new { id = data.Id });
}
public ViewResult getData(string id)
{
var _id = Convert.ToInt32(id);
// Data object is already added to the database with 4 elements
var pre = _db.Data.Find(_id).Items.Count(); // Count's 4 with correct data
var el = _db.Data
.Include(q => q.Items)
.Where(x => x.Id == _id)
.FirstOrDefault();
var post = _db.Data.Find(_id).Items.Count(); // count's 8
return View(el);
}
Но когда я выполняю getData,
// Data object is already added to the database with 4 real(manually added) Items elements
var pre = _db.Data.Find(_id).Items.Count(); // Count's 4 with correct data
var el = _db.Data
.Include(q => q.Items)
.Where(x => x.Id == _id)
.FirstOrDefault();
var post = _db.Data.Find(_id).Items.Count(); // count's 8
тогда это происходит:
В моем списке 8 элементов, из них 4 "настоящие, добавленные вручную через форму" и 4 по умолчанию, а до этого
var el = _db.Data.Include (q => q.Items) .Where (x => x.Id == _id) .FirstOrDefault ();
В нем только 4 "настоящих, добавленных вручную элемента"
Когда я снова выполняю этот код, он все равно остается на 8 элементах - он не увеличивается на 4.
Кроме того, если мой список меняется из-за этих значений по умолчанию, то почему CreationTime
нет?
Нет разницы, когда я инициализирую эти значения с помощью
новый список (4) {новый элемент (), новый элемент (), новый элемент (), новый элемент ()};
или
Items.Add (new Item ()); в кр.