13

ile Entityt Framework'teki Sql Bağlantısı ile Entegra Framework 4'ü Asp.Net MVC3 uygulamam ile kullanıyorum. Benim sorunum veritabanı ile eylem gerçekleştirmek için Varlık Framework kullanıyorum, Bu iyi çalışıyor. Başka bir amaç için veriyi veritabanından saklamak ve almak için Sql Connection kullanıyorum. Veritabanımla bağlantı kurarkenAnahtar kelime desteklenmiyor: 'meta veri'.? MVC3

hatalarını alıyorum.

Bu benim web yapılandırma

<add name="VibrantEntities" connectionString="metadata=res://*/Vibrant.csdl|res://*/Vibrant.ssdl|res://*/Vibrant.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=KAPS-PC\KAPSSERVER;initial catalog=vibrant;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

Sınıf Kitaplığı kullanıyorum olduğunu Yani bu benim App Yapılandırma olduğunu.

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

    <add name="VibrantEntities" connectionString="metadata=res://*/Vibrant.csdl|res://*/Vibrant.ssdl|res://*/Vibrant.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=KAPS-PC\KAPSSERVER;initial catalog=vibrant;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

cevap

20

(bu durumda SqlConnection olarak) ADO.NET için bağlantı dizesi bu biçimi almaz. Entity Framework için spesifik olanı kullanıyorsunuz. ,

Yani
"data source=KAPS-PC\KAPSSERVER;initial catalog=vibrant;integrated security=True" 

, bunu özetlemek için, iki ayrı bağlantı dizeleri, ADO.NET

için EF için diğeri
-1

burada daha iyi bir çözüm gidecekseniz gerekir: ADO.NET bir şey gibi olmalıdır Entity Framework Power araçlarını kullanın, veritabanınızı projenize dönüştürün, daha sonra her iki senaryo için tek bir EF bağlantı dizgisi (normal bağlantı dizesi) kullanabilirsiniz.

using System.Data.EntityClient; 
using System.Data.SqlClient; 
... 
private string GetADOConnectionString() 
{ 
    SalesSyncEntities ctx = new SalesSyncEntities(); //create your entity object here 
    EntityConnection ec = (EntityConnection)ctx.Connection; 
    SqlConnection sc = (SqlConnection)ec.StoreConnection; //get the SQLConnection that your entity object would use 
    string adoConnStr = sc.ConnectionString; 
    return adoConnStr; 
} 

(bu bir yere yerleştirmek:

+0

i daha açıklayabilir, seni alamadım –

5

(aynı şey için 2 ayrı bağlantı dizeleri hariç) başka seçenek sizin varlık Framework nesneden ADO.NET bağlantı dizesini döndüren bir yöntem oluşturmaktır benim edmx dosyalardır benim sınıf kitaplığı)

(Ben senin SQLConnection şeyler manuel SQL sorguları ise tamamen ExecuteStoredCommand yoluyla SQLConnection atlamak bile

Ya da daha ...) http://justgeeks.blogspot.com/2009/11/getting-sqlconnection-from.html bu var:

new AdventureEntities().ExecuteStoreCommand(
     @" UPDATE Users 
       SET lname = @lname 
       WHERE Id = @id", 
     new SqlParameter("lname", lname), new SqlParameter("id", id)); 

(I Entity Framework getting an sql connection bu var)

10

Bağlantı dizesi İdare Framework özgüdür ve meta verileri içerir. Sağlayıcı bağlantı dizginizi buradan almanız gerekiyor. Sen EntityConnectionStringBuilder kullanarak bunu yapabilirsiniz:

var efConnectionString = "Your Entity Framework connection string"; 
var builder = new EntityConnectionStringBuilder(efConnectionString); 
var regularConnectionString = builder.ProviderConnectionString; 
+1

, Kısa hassas ve takip edilmesi kolay! Teşekkürler –

+0

Merhaba, bu kodu nereye yazmalıyım? web.config dosyasında mı? – kurniawan26

+0

@ kurniawan26 web.config'de C# kodu yazamazsınız. Veritabanına bağlandığınız her yerde kullanmanız gerekecektir. Bağlantı dizginiz olsa, web.config' içinde olmalıdır. Kodunuzu ayrı bir soruya gönderebilirsiniz ve size yardımcı olmaktan memnuniyet duyarız. –

İlgili konular