我試圖撥打這個電話在我的代碼:從實體框架連接字符串創建DataContext?
string conn = ConfigurationManager.ConnectionStrings["MyDBEntities"].ConnectionString;
DataContext context = new DataContext(conn);
Table<MyApp.Entities.Employee> myTable = context.GetTable<MyApp.Entities.Employee>();
這裏是我的連接字符串:
<connectionStrings>
<add name="MyDBEntities" connectionString="metadata=res://*/Entities.MyDB.csdl|res://*/Entities.MyDB.ssdl|res://*/Entities.MyDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=STEVEN-PC;Initial Catalog=MyDB;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
<add name="MyDB" connectionString="Server=STEVEN-PC;Database=MyDB;Trusted_Connection=yes;" />
</connectionStrings>
創建DataContext的,當我得到一個錯誤:不支持關鍵詞:「元數據」 。
如果我使用第二個連接字符串,當試圖獲取表時出現錯誤:'/'應用程序中的服務器錯誤。 類型「MyApp.Entities.Employee」未映射爲表。
我在這裏做錯了什麼?
1)VS.NET不會生成派生自「DataContext」的類; 'DataContext'被LINQ-to-SQL使用,而不是LINQ-to-Entities。 VS.NET生成派生自「ObjectContext」的類。 2)沒有任何東西禁止直接使用ObjectContext。什麼VS.NET生成的是一個薄薄的一層,它有一些便利的方法;如果你願意,你可以很容易地自己調用這些方法,而且你根本不需要使用VS.NET生成的類,你只需要給它一個包含元數據信息的連接字符串(或者提供一個'MetadataWorkspace '分開)。 – casperOne 2011-05-16 05:04:34
@casperOne 1)感謝您的澄清。這是我的代表。 (我很少看看由Linq-To-Sql和EF生成的類)2)我認爲雖然可以直接在EF中使用基類,但是我懷疑很多人會自己寫元數據文件。 – Michael 2011-05-16 06:41:25