Невозможно создать базу данных при использовании сгенерированных классов POCo в качестве объектов

StackOverflow https://stackoverflow.com//questions/23011817

Вопрос

По какой-то причине я начал развиваться из моего дизайна базы данных.Затем я использовал 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>());
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top