Я учусь и работаю сразу. Простой учебник научил меня сначала создавать базу данных с использованием кода. Теперь я хочу несколько таблиц, но у меня есть несколько баз данных. Я почти уверен, что это неправильно, не так ли?Как использовать код Entity Framework Сначала правильно с несколькими таблицами
Пример: У меня есть одна база данных для пользователей под названием «DefaultConnection» с таблицами, как «AspNetRoles», «AspNetUsers» и так далее. Отлично.
Но ... У меня есть отдельная база данных для блогов под названием «BlogDBContext» с одной таблицей. У меня есть другая база данных для уроков под названием «LessonDBContext» с одной таблицей для уроков. Мой друг говорит , это неправильно, и я думаю, что он прав, но он продолжает ломать вещи, когда пытается его исправить.
Каков правильный способ использования кода для настройки таблиц для разных моделей без создания целых новых баз данных?
FWIW Я думаю, что это о том, где я завинчивание: general secion of the tutorial I got it from
Я делаю что-то вроде этого для каждого из них:
namespace ScatterSchool.Models
{
public class Lesson
{
public int Id { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public string Tags { get; set; }
[Display(Name = "Lesson Date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime LessonDate { get; set; }
//public virtual User User { get; set; }
}
public class LessonDBContext : DbContext
{
public DbSet<Lesson> Lessons { get; set; }
}
}
настроить строки подключения в Web.Config, и т. д. И я получаю новую базу данных с таблицей уроков ...
Не уверен, что он делает, но он получает одну базу данных с уроками, блогами и таблицами пользователей, и все это broken. Его код выглядит так же, но он изолируя все DbContexts:
namespace ScatterSchool.Models {
public partial class Lesson {
public int ID { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public string Tags { get; set; }
public string DateCreated { get; set; }
public int User_Id { get; set; }
public virtual User User { get; set; }
}
}
и контексты:
namespace ScatterSchool.Models {
using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
public partial class DatabaseContext : DbContext {
public DatabaseContext() : base("name=Database") { }
public virtual DbSet<Blog> Blogs { get; set; }
public virtual DbSet<Lesson> Lessons { get; set; }
public virtual DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<User>()
.HasMany(e => e.Lessons)
.WithRequired(e => e.User)
.HasForeignKey(e => e.User_Id);
}
}
}
я делаю вещи, которые не нарушена, но я думаю, что я делаю это более неправильно. Он заставляет вещи сломаться, но я думаю, что он делает что-то более справедливое.
Я просто хочу получить общее руководство или советы по правильной настройке фоновых данных для каждой из моих моделей.
окончательный, но важный вопрос: Должен ли я оставить базу данных DefaultConnection со всеми жизненно безопасного входа в систему только вещи и сделать новый один для всего остального, или просто добавлять таблицы в этой базе данных? I в конечном итоге хотят показывать разные блоги/уроки для разных пользователей.
Просто используйте одну базу данных. Настройте одну строку соединения в файле web.config и используйте имя этой строки соединения в базовом конструкторе для вашего DatabaseContext. Поэтому, если строка соединения называется DefaultConnection, в вашем DatabaseContext, который сделал ваш друг, передайте базовому конструктору строку «name = DefaultConnection», – JB06