Gần đây tôi đã bắt đầu sử dụng thư viện Chỉ mã EF v4 cho một số dự án tôi đang làm việc. Tuy nhiên, tôi đã chạy vào một chút của một snag. Tôi dường như không thể tìm ra định dạng phù hợp cho chuỗi kết nối. Tôi đã sử dụng đoạn mã sau để xây dựng các chuỗi kết nối:Entity Framework v4 Chuỗi kết nối chỉ mã
string connectionString = new EntityConnectionStringBuilder
{
Provider = "System.Data.SqlClient",
ProviderConnectionString = new SqlConnectionStringBuilder
{
DataSource = "localhost",
InitialCatalog = "ASM_Testing",
IntegratedSecurity = true,
Pooling = false
}.ConnectionString
}.ConnectionString;
Tuy nhiên, sử dụng nó kết quả trong các lỗi sau:
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)
Thấy như tôi không có bất kỳ siêu dữ liệu ... kể từ khi tôi đang sử dụng Code Only, tôi đang có một chút ràng buộc. Bất kỳ cái nhìn sâu sắc nào đều được đánh giá cao.
Chuỗi kết nối được tạo ra bởi các lớp học xây dựng như sau:
provider=System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=ASM_Testing;Integrated Security=True;Pooling=False"
làm việc Ví dụ (dựa trên câu trả lời được chấp nhận)
Nó là cần thiết để sử dụng ContextBuilder để tạo ra bất kỳ ví dụ về ngữ cảnh sử dụng chế độ chỉ mã. Dưới đây là một ví dụ làm việc này cho những ai đang tìm kiếm một câu trả lời cho cùng một vấn đề:
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);
}
Bạn có thể gửi chuỗi kết quả? Hay nó đã nổ tung khi thực thi mã này? –
@Henk: Đã thêm chuỗi kết nối. – jrista