Я пытаюсь создать мини-проект в asp.NET MVC4, который имитирует небольшой игровой обзорный веб-сайт. Ничего захватывающего не происходит, я просто хотел разобраться с различными аспектами инструментов и языка.asp.Net MVC4 с двумя объектами базы данных ссылаются друг на друга
В настоящее время я думал о создании базы данных, чтобы связать жанры с ID, поэтому, когда я создаю набор базы данных игр, я могу ссылаться на игры по родным жанрам. Я использовал первый подход Code для создания моделей, но я не уверен, как правильно ссылаться на жанры, которые хранятся в виртуальной коллекции, так что если я создаю таблицу на основе жанра или таблицу на основе игры, правильно. Я просто изучаю этот подход MVC, поэтому прошу прощения, если моя терминология отключена.
public class GamingModels : DbContext
{
public DbSet<Games> GameDb { get; set; }
public DbSet<Genre> GenreDb { get; set; }
public GamingModels()
: base("DefaultConnection")
{ }
public class Games {
public int ID { get; set; }
public string Title { get; set; }
public string Summary { get; set;}
public int Rating { get; set; }
public virtual ICollection<Genres> Genres { get; set; }
}
public class Genre {
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Games> Games { get; set; }
}
}
[Начал писать ответ, но это лучше] [1] [1]: http://stackoverflow.com/questions/7050404/create-code-first-many-to-many -with-Additional-fields-in-association-table – Nogusta
Вы можете также рассмотреть подход Model First. Code First хорошо иметь весь ваш «исходный код» в одном месте, включая схемы базы данных, но многие вещи, которые тривиальны при создании вашей базы данных, сначала становятся довольно сложными и даже эзотерическими с использованием первого подхода кода. Создайте свои базы данных, используйте Entity Framework для рендеринга слоя DAL и от вас. Чтобы отслеживать изменения базы данных разработки, которые должны идти на производство, подумайте о том, как использовать инструмент Red Gates Sql Compare, стоимость каждого из которых составляет 300 лицензий. –