0

空き時間に単純なブログ Web サイトのデータ構造を作成しようとしていますが、このエラーが発生する理由がわかりません。私はEF5とMVC4を使用しています。DbContext:

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 (implements BaseController) のこの行で、「シーケンスに複数の要素が含まれています」というエラーが表示されます。

vm.Blogs = db.Blogs.Where(x => x.CreatedDate >= subtractDate).OrderBy(x => x.BlogId).ToList();
vm.BlogTypes = db.BlogTypes.ToList();

そして、ここにスタックトレースがあります:

[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

任意の入力をいただければ幸いです。私はこれに1日か2日頭を悩ませてきました。前もって感謝します!

編集:

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.

ここに私の接続文字列があります:

<add name="KWBlogContext" connectionString="Data Source=MACHINENAME\SQLEXPRESS;Initial Catalog=KWBlog;Integrated Security=True" providerName="System.Data.SqlClient" />
4

1 に答える 1

0

コードのどこかでSingleOrDefaultと 条件または式が複数の要素を返しています。コントローラー コードを投稿して確認してください。

于 2013-05-26T12:28:11.997 に答える