Я установил в своей схеме по умолчанию значение "WHE" в переопределении функции OnModelCreating:
modelBuilder.HasDefaultSchema("WHE");
Я создал таблицу через платформу CodeFirst Entity Framework:
using System.ComponentModel.DataAnnotations;
namespace Exemptions.Models
{
public class KillYears
{
[Key]
public int Id { get; set; }
public string Year { get; set; }
}
}
Воткод из миграции:
public override void Up()
{
CreateTable(
"WHE.KillYears",
c => new
{
Id = c.Int(nullable: false, identity: true),
Year = c.String(),
})
.PrimaryKey(t => t.Id);
}
Вот таблица в базе данных после запуска Update-Database:
Таблица в базе данных
Вот вызов модели:
(from k in model.KillYears
orderby k.Year descending
where k.Year != null
select k).ToList()
... и вот ошибка, которую я получаю:
System.Data.Entity.Core.EntityCommandExecutionException: 'Anпроизошла ошибка при выполнении определения команды.Смотрите внутреннее исключение для деталей.Внутреннее исключение SqlException: Неверное имя объекта 'dbo.KillYears'.
Я искал "dbo".в моем решении, и получил этот результат:
Find all "dbo.", Find Results 1, Entire Solution, ""
Matching lines: 0 Matching files: 0 Total files searched: 472
Может кто-нибудь сказать мне, почему мой запрос linq смотрит на неправильную схему?Я создал 8 или 9 таблиц в этом проекте с тех пор, как занялся им, и ни у одной из них не было этой проблемы.
Есть предложения?
РЕДАКТИРОВАТЬ: проблема была найдена на основевопрос @Orwel задал.У человека, который создал это приложение, изначально есть две модели: [appname] Model и IdentityModels.HasDefaultSchema была установлена в одной модели, но не в другой.Я вызвал HasDefaultSchema во второй модели, и это решило проблему.