Есть два класса Student:
public class Student
{
public int Id { get; set; }
[Required]
[Display(Name = "Имя")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Фамилия")]
public string LastName { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
И Post:
public class Post
{
public int Id { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Заголовок")]
public string Header { get; set; }
[Required]
[DataType(DataType.MultilineText)]
[Display(Name = "Текст поста")]
public string Content { get; set; }
[Display(Name = "Автор")]
public virtual Student Author { get; set; }
[Required]
[DataType(DataType.DateTime)]
public DateTime Created { get; set; }
public Post()
{
Created = DateTime.Now;
}
}
Для создания связей использую Fluent API:
public NewsStudentDbContext() :base("name=NewsStudent")
{ }
public DbSet<Student> Students { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().
HasMany(a => a.Posts).
WithRequired(a => a.Author);
}
}
Создаю объект Post:
public ActionResult Create(Post post)
{
var user = new Student()
{
Id = ((Student)Session["User"]).Id,
FirstName = ((Student)Session["User"]).FirstName,
LastName = ((Student)Session["User"]).LastName
};
post.Author = user;
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Index");
}
Результат:
Students:
Posts:
Почему объект класса Student клонируется каждый раз когда создаётся новый пост?
Пожалуйста помогите понять.
Так вы каждый раз его заново создаёте. Не создавайте заново - раз. Для указания студента достаточно заполнить его Id - два.
Что-то в духе:
public void Create(string content, int authorId)
{
var post = new Post
{
Content = content,
AuthorId = authorId,
};
db.Posts.Add(post);
db.SaveChanges();
}
Естественно, нужно проверять, что такой Id есть в базе.
И конечно же, у вас должно быть явно создано поле int AuthorId.
Вопрос очень похож на этот, почитайте возможно что-то ещё почерпнёте полезное.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
нужно создать класс-прототип для хранения и обработки экземпляров структур, наложить ограничение на параметр типа данных: элементы коллекции...
Я использовал 2 метода для получения значения ячейки(пустой и с цифрой): sheetGetText(row,cell) всегда дает пустую строку, а sheet
У меня есть круг и его заливка это картинка которая в папке \Resources\Images\При нажатии на нее пользователь может выбрать другую, которая будет...
Вопрос не нов, но в сети я не смог найти ответа к сожалениюВ общем ситуация следующая,у меня есть класс к примеру: