Невозможно создать базу данных при использовании сгенерированных классов POCo в качестве объектов
-
21-12-2019 - |
Вопрос
По какой-то причине я начал развиваться из моего дизайна базы данных.Затем я использовал Poco для создания моих организаций, конфигураций объектов и контекста.
На моем следующем шаге я хотел бы сделать мою приложение создать новую базу данных, если база данных, указанная в подключенной строке файла конфигурации, не существует.
Проблема, которую я сталкивался на данный момент, это следующее: Когда я пытаюсь получить FirstOdefault с DBSet моей модели, я получаю следующее сообщение об ошибке
system.data.entity.core.entitycommandexecutionException: ошибка произошло при выполнении определения команды.Увидеть внутреннее Исключение для деталей.---> System.data.sqlclient.sqlexception: Неверное имя объекта 'dbo.role'.
Я использую следующую конфигурацию моего объекта
internal class RoleConfiguration : EntityTypeConfiguration<Role>
{
public RoleConfiguration(string schema = "dbo")
{
ToTable("Role", schema);
HasKey(x => x.RoleId);
Property(x => x.RoleId).HasColumnName("RoleId").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
HasMany(t => t.Roles_RoleId).WithMany(t => t.Roles_ChildRoleId).Map(m =>
{
m.ToTable("RoleRoles", schema);
m.MapLeftKey("ChildRoleId");
m.MapRightKey("RoleId");
});
}
}
. Решение
Если вы хотите, чтобы EF создавать для вас базу данных, вам необходимо установить правильный инициализатор в контекстном конструкторе.Например, как это:
public YourContextEntities() : base("name=ConnectionStringName")
{
Database.SetInitializer(new CreateDatabaseIfNotExists<YourContextEntities>());
}
.