簡體   English   中英

為什么我的實體框架連接字符串不起作用

[英]Why is my Entity Framework connection string not working

我正在嘗試不使用App.Config而連接到數據庫,但是我一直收到以下錯誤:

EntityFramework.dll中發生類型為'System.Data.Entity.Core.EntityException'的未處理異常

附加信息:基礎提供程序在ConnectionString上失敗。

我看不到哪里出了問題,所以我想在這里問。

namespace MyNameSpace
    {
        using System;
        using System.Data.Entity;
        using System.Data.Entity.Core.EntityClient;
        using System.Data.Entity.Infrastructure;

        public partial class Entities : DbContext
        {
            public Entities()
                : base(entityString.ToString())
            {
            }

            public static EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder()
            {
                Provider = "System.Data.SqlServerCe.4.0",          
                Metadata = "res://*/RS.csdl|res://*/RS.ssdl|res://*/RS.msl",
                ProviderConnectionString = @"C:\RestOfPath\database.sdf;Password=3476dfg423434563466e85rcsd"
            };  



        }
    }

預先感謝您的幫助。

試試這個:設置此參數

    public Entities(string connString)
        : base(connString)
    {
    }

並在創建Context類的對象時傳遞字符串連接字符串。

public class TestController : Controller
{
 Entity _context = new Entity("data source=Dev-4;initial catalog=test1;
 integrated security=True;MultipleActiveResultSets=True;  
 App=EntityFramework");
}

試試這個:這里您不需要一次又一次地傳遞連接字符串->

    public Model1()
        : base(connString)
    {
    }

    public static string connString = "data source=tesst;initial catalog=test1;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework";

使用實體框架的數據庫優先模型時,請使用以下方法:

    public test1Entities()
         : base(nameOrConnectionString: ConnectionString())
    {
    }

    private static string ConnectionString()
    {
        SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
        sqlBuilder.DataSource = "DEV-4";
        sqlBuilder.InitialCatalog = "test1";
        sqlBuilder.PersistSecurityInfo = true;
        sqlBuilder.IntegratedSecurity = true;
        sqlBuilder.MultipleActiveResultSets = true;

        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
        entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
        entityBuilder.Metadata = "res://*/";
        entityBuilder.Provider = "System.Data.SqlClient";

        return entityBuilder.ToString();
    }

問題是您直接在連接字符串上傳遞了sdf文件。 嘗試更改:

ProviderConnectionString = @"C:\RestOfPath\database.sdf;Password=3476dfg423434563466e85rcsd"

至:

ProviderConnectionString = @"Data Source=C:\RestOfPath\database.sdf;Password=3476dfg423434563466e85rcsd"

或者更好的方法是,使用SqlCeConnectionStringBuilder構造此屬性:

var connectionStringBuilder = new SqlCeConnectionStringBuilder();
connectionStringBuilder.DataSource = @"C:\RestOfPath\database.sdf";
connectionStringBuilder.Password = "3476dfg423434563466e85rcsd";
EFConnectionBuilder.ProviderConnectionString = connectionStringBuilder.ToString(),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM