C# 实体框架6连接字符串问题
我有一个C#ASP.NET MVC code first项目,可以连接到我的数据库。它在web.config文件中设置了连接字符串,所有这些似乎都工作得很好C# 实体框架6连接字符串问题,c#,entity-framework,C#,Entity Framework,我有一个C#ASP.NET MVC code first项目,可以连接到我的数据库。它在web.config文件中设置了连接字符串,所有这些似乎都工作得很好 <connectionStrings> <add name="HorstMFGContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|HorstMFG.mdf;Initial Cata
<connectionStrings>
<add name="HorstMFGContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|HorstMFG.mdf;Initial Catalog=aspnet-HorstMFG;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
以下是调用函数的行:
using (var db = HorstMFGEntities.Create(@"data source=(localdb)\MSSQLLocalDB;attachdbfilename=C:\Users\lorne\source\repos\HorstMFG\HorstMFG\App_Data\HorstMFG.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"))
{
foreach (string l in lineList3)
{
....
....
下面是引发异常的实际行
// calculate material
Material mat = db.Materials.Where(m => m.StructuralCode == l.Split('\t')[6]).FirstOrDefault();
异常消息“错误:不支持关键字:'元数据'”
任何能为我指明正确方向的帮助都将不胜感激。谢谢
我根据第一条评论更新了代码,还添加了我错过的“提供者”
public static HorstMFGEntities Create(string nameOrConnectionString)
{
var entityBuilder = new EntityConnectionStringBuilder();
// use your ADO.NET connection string
entityBuilder.ProviderConnectionString = nameOrConnectionString;
entityBuilder.Provider = "System.Data.SqlClient";
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/HorstMFG.csdl|res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";
return new HorstMFGEntities(entityBuilder.ConnectionString);
}
现在我得到了错误“error:无法加载指定的资源”
现在,我按照中的说明进行了操作,我想我已经接近了,但是我对元数据格式还有些模糊。示例中似乎有一部分被注释掉了。我将其替换为:
entityBuilder.Metadata = "res://*/HorstMFG.csdl|res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";
现在出现错误:“无法加载指定的元数据资源”
我确认我引用的文件确实存在,它们位于我的项目中的…\obj\Debug\edmxResourcesToEmbed\文件夹中。我还将“HorstMFG.edmx”对象的“生成操作”从“无”更改为“嵌入资源”。这没有任何帮助
我几年前使用过这个connection builder类,我知道它可以工作……我注意到您的示例与您链接的示例有所不同。您的版本缺少“Model.csdl”“在meta中…非常确定EF需要所有3个res链接。像这样试一下,看看是否有效。res://*/Model.csdl | res://*/Model.ssdl | res://*/Model.mslEF代码首先不需要它们。请参阅编辑问题中的其他信息。抱歉,我忽略了您先编写代码的事实…看看这个问题…它更符合您的尝试。在原始问题中添加了更多细节。
entityBuilder.Metadata = "res://*/HorstMFG.csdl|res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";