2012-01-23 29 views
6

Tôi quyết định di chuyển Entity Connection String từ app.config sang mã. Tuy nhiên sau khi thiết lập nó như thế này:Khuôn khổ thực thể: Không thể tải tài nguyên siêu dữ liệu được chỉ định

public static string GetConnectionString() { 
     string connection = ""; 

     SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(); 
     sqlBuilder.DataSource = dbServer; 
     sqlBuilder.InitialCatalog = dbInitialCatalog; 

     sqlBuilder.IntegratedSecurity = false; 
     sqlBuilder.UserID = dbUserName; 
     sqlBuilder.Password = dbPasswWord; 
     sqlBuilder.MultipleActiveResultSets = true; 

     EntityConnectionStringBuilder entity = new EntityConnectionStringBuilder(); 
     // entity.Name = "EntityBazaCRM"; 
     entity.Metadata = @"res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl"; 

     entity.Provider = "System.Data.SqlClient"; 
     entity.ProviderConnectionString = sqlBuilder.ToString(); 

     connection = entity.ToString(); 

     return connection; 
    } 

Tôi có ngoại lệ được ném Unable to load the specified metadata resource. trong .Designer.cs.

/// <summary> 
    /// Initialize a new EntityBazaCRM object. 
    /// </summary> 
    public EntityBazaCRM(string connectionString) : base(connectionString, "EntityBazaCRM") 
    { 
     this.ContextOptions.LazyLoadingEnabled = true; 
     OnContextCreated(); 
    } 

Nếu tôi xác định .name bên trong tạo Entity tôi nó ném một ngoại lệ

"Other keywords are not allowed when the 'Name' keyword is specified." (System.ArgumentException) Exception Message = "Other keywords are not allowed when the 'Name' keyword is specified.", Exception Type = "System.ArgumentException"

Tôi biết tôi thiếu một cái gì đó mà tôi phải thay đổi để tự tạo ra mã sử dụng chuỗi kết nối mới nhưng phải tìm ở đâu?

+0

xem tại đây. đây là một cách trả lời tốt :) http://stackoverflow.com/questions/689355/metadataexception-unable-to-load-the-specified-metadata-resource – Phil

Trả lời

26

Sau khi đọc bài viết this answersthis blog tôi đã thay đổi:

entity.Metadata = @"res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl"; 

Để:

entity.Metadata = "res://*/"; 

Và nó hoạt động :-)

+1

Có vẻ như giải pháp tốt, nhưng có bất kỳ tác hại nào không trong việc này? –

+0

Không phải là tôi biết. Tôi đang sử dụng nó từ thời điểm đó cho đến ngày hôm nay;) – MadBoy

+0

Làm việc cho tôi, mặc dù tôi có một chút lo lắng về lý do tại sao ... – NibblyPig

Các vấn đề liên quan