Я пытаюсь создать структуру данных для простого веб-сайта блога в свое свободное время, и я не могу понять, почему я получаю эту ошибку. Я использую EF5 и MVC4. DbContext:Контекст данных не может использоваться во время создания модели. Entity Framework 5
public class KWBlogContext : DbContext
{
static KWBlogContext()
{
Database.SetInitializer<KWBlogContext>(null);
}
public DbSet<Blog> Blogs { get; set; }
public DbSet<BlogType> BlogTypes { get; set; }
etc...
Я экспериментировал немного с OnModelCreating, но безрезультатно.
DbContext инициализируется по BaseController:
public class BaseController : Controller
{
public KWBlogContext db;
public BaseController()
{
Database.SetInitializer<KWBlogContext>(null);
db = new KWBlogContext();
}
}
Я получаю "Послед содержит более одного элемента" ошибка в этой строке в HomeController (реализует BaseController):
vm.Blogs = db.Blogs.Where(x => x.CreatedDate >= subtractDate).OrderBy(x => x.BlogId).ToList();
vm.BlogTypes = db.BlogTypes.ToList();
И здесь является StackTrace:
[InvalidOperationException: Sequence contains more than one element]
System.Linq.Enumerable.SingleOrDefault(IEnumerable`1 source) +4078798
System.Data.Entity.ModelConfiguration.Conventions.<>c__DisplayClass3.<System.Data.Entity.ModelConfiguration.Conventions.IEdmConvention<System.Data.Entity.Edm.EdmEntityType>.Apply>b__0(PropertyInfo p) +187
System.Data.Entity.ModelConfiguration.Utilities.IEnumerableExtensions.Each(IEnumerable`1 ts, Action`1 action) +194
System.Data.Entity.ModelConfiguration.Conventions.DeclaredPropertyOrderingConvention.System.Data.Entity.ModelConfiguration.Conventions.IEdmConvention<System.Data.Entity.Edm.EdmEntityType>.Apply(EdmEntityType entityType, EdmModel model) +185
System.Data.Entity.ModelConfiguration.Configuration.EdmConventionDispatcher.Dispatch(TEdmDataModelItem item) +181
System.Data.Entity.ModelConfiguration.Configuration.EdmConventionDispatcher.VisitEdmEntityType(EdmEntityType item) +59
System.Data.Entity.Edm.Internal.DataModelItemVisitor.VisitCollection(IEnumerable`1 collection, Action`1 visitMethod) +204
System.Data.Entity.Edm.Internal.EdmModelVisitor.VisitEntityTypes(EdmNamespace edmNamespace, IEnumerable`1 entityTypes) +89
System.Data.Entity.Edm.Internal.EdmModelVisitor.VisitEdmNamespace(EdmNamespace item) +193
System.Data.Entity.ModelConfiguration.Configuration.EdmConventionDispatcher.VisitEdmNamespace(EdmNamespace item) +53
System.Data.Entity.Edm.Internal.DataModelItemVisitor.VisitCollection(IEnumerable`1 collection, Action`1 visitMethod) +204
System.Data.Entity.Edm.Internal.EdmModelVisitor.VisitNamespaces(EdmModel model, IEnumerable`1 namespaces) +89
System.Data.Entity.Edm.Internal.EdmModelVisitor.VisitEdmModel(EdmModel item) +130
System.Data.Entity.ModelConfiguration.Configuration.EdmConventionDispatcher.VisitEdmModel(EdmModel item) +79
System.Data.Entity.ModelConfiguration.Configuration.EdmConventionDispatcher.Dispatch() +36
System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ApplyModel(EdmModel model) +136
System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo) +209
System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) +106
System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) +143
System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input) +171
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +499
System.Data.Entity.Internal.InternalContext.Initialize() +31
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +39
System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +38
System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +84
Любой вход будет оценен. Я бил головой об этом в течение дня или двух. Заранее спасибо!
EDIT:
Я пришел к выводу, что это также может быть проблемой SQL Server/конфигурации. Я искал в моих Management Studio журналы и наткнулся на:
The SQL Server Network Interface library could not register the SPN for the SQL Server service. [ MSSQLSvc/MachineName:SQLEXPRESS] Windows return code: 0xffffffff, state 63
Dedicated administrator connection support was not started because it has been disabled on this edition of SQL Server. If you want to use dedicated administrator connection, restart SQL server using the trace flag 7806.
Вот мой ConnectionString:
<add name="KWBlogContext" connectionString="Data Source=MACHINENAME\SQLEXPRESS;Initial Catalog=KWBlog;Integrated Security=True" providerName="System.Data.SqlClient" />
Код HomeController, который я разместил, является единственным кодом, вызывающим DbContext, и использует метод ToList(). Он определен в модели представления как открытый IEnumerable Блоги {get; задавать; } –
kwinsor5
вы можете отлаживать и посмотреть, что представляет собой запрос EF, который создается при нажатии этой строки 'db.Blogs.Where (x => x.CreatedDate> = subtractDate) .OrderBy (x => x.BlogId). ToList(); ' – Saravanan