代码之家  ›  专栏  ›  技术社区  ›  jrista

实体框架v4纯代码连接字符串

  •  6
  • jrista  · 技术社区  · 14 年前

    我最近已经开始使用efv4代码库的一些项目,我正在工作。然而,我遇到了一个小麻烦。我似乎想不出连接字符串的正确格式。我已使用以下代码构建连接字符串:

    string connectionString = new EntityConnectionStringBuilder
    {
        Provider = "System.Data.SqlClient",
        ProviderConnectionString = new SqlConnectionStringBuilder
        {
            DataSource = "localhost",
            InitialCatalog = "ASM_Testing",
            IntegratedSecurity = true,
            Pooling = false
        }.ConnectionString
    }.ConnectionString;
    

    但是,使用它会导致以下错误:

    Specifications_for_EntityContext.When_logging_in_application_with_valid_app_role_and_password.Login_should_be_successful : System.ArgumentException : Some required information is missing from the connection string. The 'metadata' keyword is always required.
    Stack Trace:
       at System.Data.EntityClient.EntityConnection.ValidateValueForTheKeyword(DbConnectionOptions effectiveConnectionOptions, String keywordName)
       at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
       at System.Data.Objects.ObjectContext..ctor(String connectionString)
       at ASM.Data.EntityContext..ctor(String connectionString) in C:\Users\Jon Rista\TFS\Advanced Service Management\Trunk\Main\Source\ASM.Data\EntityContext.cs:line 16
       at Specifications_for_EntityContext.Behaves_like_EntityContext_connected_to_a_database.TestableEntityContext..ctor(String connectionString) in C:\Users\Jon Rista\TFS\Advanced Service Management\Trunk\Main\Source\Tests.ASM.Data\EntityContextFacts.cs:line 165
       at Specifications_for_EntityContext.Behaves_like_EntityContext_connected_to_a_database.InitializeContext() in C:\Users\Jon Rista\TFS\Advanced Service Management\Trunk\Main\Source\Tests.ASM.Data\EntityContextFacts.cs`e`enter code here`nter code here`:line 160
       at ASM.Testing.xUnit.ObservationCommand.Execute(Object testClass) in C:\Users\Jon Rista\TFS\Advanced Service Management\Trunk\Main\Source\ASM.Testing.xUnit\ObservationCommand.cs:line 24
       at Xunit.Sdk.FixtureCommand.Execute(Object testClass)
       at Xunit.Sdk.BeforeAfterCommand.Execute(Object testClass)
       at Xunit.Sdk.LifetimeCommand.Execute(Object testClass)
       at Xunit.Sdk.TimedCommand.Execute(Object testClass)
       at Xunit.Sdk.ExceptionAndOutputCaptureCommand.Execute(Object testClass)
    

    生成器类生成的连接字符串如下所示:

    连接字符串=“数据 源=本地主机;首字母 目录=ASM\U测试;综合


    工作示例(基于公认的答案)

    必须使用ContextBuilder来创建使用纯代码模式的上下文的任何实例。对于那些正在寻找同一问题答案的人来说,下面是一个工作示例:

    protected override void InitializeContext()
    {
        string connectionString = new SqlConnectionStringBuilder
        {
            DataSource = "localhost",
            InitialCatalog = "Testing",
            IntegratedSecurity = true,
            Pooling = false
        }.ConnectionString;
    
        var connection = new SqlConnection(connectionString);
        var builder = new ContextBuilder<TestableEntityContext>();
        m_context = builder.Create(connection);
    }
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   Gregoire    14 年前

    要使用它:

    var builder = new ContextBuilder<YourContext>();
    
    using (YourContext context = builder.Create(new SqlConnection(ConfigurationManager.ConnectionStrings["yourConenctionKeyInWebConfig"].ConnectionString)))
    {
         ...
    }
    
        2
  •  3
  •   Yury Tarabanko    14 年前

    ContextBuilder

    1. 定义ctor取数 EntityConnection EntityContext

      { }

    2. var factory=DbProviderFactories.GetFactory(“System.Data.SqlClient”); connection.ConnectionString=提供程序连接字符串;

    3. 上下文生成器

      var contextBuilder=新建contextBuilder(); contextBuilder.Configurations.Add(…)