【问题标题】:EDMX Connectionstring 'name'EDMX 连接字符串“名称”
【发布时间】:2015-01-19 11:08:12
【问题描述】:

我们已经通过 Edmx 生成了这个连接字符串(如下):

   <add name="Connection" connectionString="metadata=res://*/Code.aa.csdl|res://*/Code.aa.ssdl|res://*/Code.aa.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=server.com;initial catalog=db_name;persist security info=True;user id=user;password=pwd;multipleactiveresultsets=True;application name=EntityFramework;&quot;" providerName="System.Data.EntityClient" />

但是,运行应用程序会给我们以下消息:

“System.ArgumentException: 参数 'name' 不能为 null、空或仅包含空格。”

我没有在连接字符串中看到任何错误的空格。这是什么原因造成的?

堆栈跟踪:

ij System.Data.Entity.Utilities.Check.NotEmpty(String value, String parameterName) bij System.Data.Entity.Core.Metadata.Edm.EdmMember..ctor(字符串名称,TypeUsage memberTypeUsage) bij System.Data.Entity.Core.Metadata.Edm.EdmProperty..ctor(字符串名称,TypeUsage typeUsage) 比耶

System.Data.Entity.Core.Metadata.Edm.Converter.ConvertToProperty(StructuredProperty somProperty, DbProviderManifest providerManifest, ConversionCache convertedItemCache, Dictionary`2 newGlobalItems)
   bij System.Data.Entity.Core.Metadata.Edm.Converter.ConvertToEntityType(SchemaEntityType element, DbProviderManifest providerManifest, ConversionCache convertedItemCache, Dictionary`2 newGlobalItems)
   bij System.Data.Entity.Core.Metadata.Edm.Converter.LoadSchemaElement(SchemaType element, DbProviderManifest providerManifest, ConversionCache convertedItemCache, Dictionary`2 newGlobalItems)
   bij System.Data.Entity.Core.Metadata.Edm.Converter.ConvertToEntitySet(EntityContainerEntitySet set, DbProviderManifest providerManifest, ConversionCache convertedItemCache, Dictionary`2 newGlobalItems)
   bij System.Data.Entity.Core.Metadata.Edm.Converter.ConvertToEntityContainer(EntityContainer element, DbProviderManifest providerManifest, ConversionCache convertedItemCache, Dictionary`2 newGlobalItems)
   bij System.Data.Entity.Core.Metadata.Edm.Converter.LoadSchemaElement(SchemaType element, DbProviderManifest providerManifest, ConversionCache convertedItemCache, Dictionary`2 newGlobalItems)
   bij System.Data.Entity.Core.Metadata.Edm.Converter.ConvertSchema(Schema somSchema, DbProviderManifest providerManifest, ConversionCache convertedItemCache, Dictionary`2 newGlobalItems)
   bij System.Data.Entity.Core.Metadata.Edm.Converter.ConvertSchema(IList`1 somSchemas, DbProviderManifest providerManifest, ItemCollection itemCollection)
   bij System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.LoadSomSchema(IList`1 somSchemas, DbProviderManifest providerManifest, ItemCollection itemCollection)
   bij System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.LoadItems(DbProviderManifest manifest, IList`1 somSchemas, ItemCollection itemCollection)
   bij System.Data.Entity.Core.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, IDbDependencyResolver resolver, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerInvariantName, String& providerManifestToken, Memoizer`2& cachedCTypeFunction)
   bij System.Data.Entity.Core.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths)
   bij System.Data.Entity.Core.Metadata.Edm.MetadataCache.LoadStoreCollection(EdmItemCollection edmItemCollection, MetadataArtifactLoader loader)
   bij System.Data.Entity.Core.Metadata.Edm.MetadataCache.<>c__DisplayClass5.<>c__DisplayClass7.<GetMetadataWorkspace>b__1()
   bij System.Lazy`1.CreateValue()
   bij System.Lazy`1.LazyInitValue()
   bij System.Lazy`1.get_Value()
   bij System.Data.Entity.Core.Metadata.Edm.MetadataCache.<>c__DisplayClass5.<>c__DisplayClass7.<GetMetadataWorkspace>b__4()
   bij System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace.LoadAndCheckItemCollection[T](Func`1 itemCollectionLoader)
   bij System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace.<>c__DisplayClass16.<.ctor>b__f()
   bij System.Lazy`1.CreateValue()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bij System.Lazy`1.get_Value()
   bij System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace.GetItemCollection(DataSpace dataSpace, Boolean required)
   bij System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace.GetItemCollection(DataSpace dataSpace)
   bij System.Data.Entity.Core.Objects.ObjectContext.InitializeMappingViewCacheFactory(DbContext owner)
   bij System.Data.Entity.Core.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor, ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, Translator translator, ColumnMapFactory columnMapFactory)
   bij System.Data.Entity.Core.Objects.ObjectContext..ctor(EntityConnection connection)
   bij System.Data.Entity.Internal.InternalConnection.CreateObjectContextFromConnectionModel()
   bij System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel()
   bij System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   bij System.Data.Entity.Internal.InternalContext.Initialize()
   bij System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   bij System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   bij System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   bij System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
   bij System.Linq.Queryable.OrderByDescending[TSource,TKey](IQueryable`1 source, Expression`1 keySelector)
   bij TPO.Code.TpoFunctions.getLastReleaseDate() in regel 930
   bij TPO.Global.Application_Start(Object sender, EventArgs e) in Global.asax.cs:regel 67

函数调用:

 protected void Application_Start(object sender, EventArgs e)
        {
      using (var db = new Foo_Bar())
                {
                    var release = (from a in db.Release
                                   orderby a.R_ReleaseDatum descending
                                   select a).FirstOrDefault();

                    _LastReleaseDate = release.R_ReleaseDatum.Value;
                }
}

Foo_Bar DbContext 派生类的定义

public partial class Foo_Bar : DbContext
    {
        public Foo_Bar()
            : base("name=Connection")
        {
        }
    }

【问题讨论】:

  • 显示抛出错误的代码。
  • @majidgeek 任何查询。

标签: asp.net connection-string edmx


【解决方案1】:

该异常是由DbContext 基类的构造函数引发的。您的派生上下文类在没有连接字符串的情况下初始化。应该是这样的:

public class YourContext : DbContext
{
    public YourContext() 
        : base("Foo_Bar")
    {
    }
}

【讨论】:

  • 我已经添加了,问题仍然存在。有什么选择吗?
  • 那么唯一的选择是您将所有相关代码编辑到您的问题中,并包括异常的堆栈跟踪。
  • 将其添加到问题中
  • 这是一个堆栈跟踪,感谢添加。您仍然缺少 DbContext 派生类和使用它的 Application_Start。在某处你有一个lazyContext = new Lazy&lt;YourContext&gt;(() =&gt; new YourContext()),只要访问lazyContext.Value,它就会抛出。
  • 请同时显示您的Foo_Bar DbContext 派生类的定义。
猜你喜欢
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 2014-03-23
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多