Entity Framework: Unable to load the specified metadata resource
我决定把
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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; } |
我在.designer.cs中抛出了一个异常
1 2 3 4 5 6 7 8 | /// <summary> /// Initialize a new EntityBazaCRM object. /// </summary> public EntityBazaCRM(string connectionString) : base(connectionString,"EntityBazaCRM") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } |
如果我在实体创建者内部定义.name,它将引发另一个异常
我知道我遗漏了一些必须更改的内容,以便自生成的代码使用新的连接字符串,但是在哪里可以找到它呢?
在阅读了本文和博客之后,我改变了:
1 | entity.Metadata = @"res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl"; |
到:
1 | entity.Metadata ="res://*/"; |
它起作用了:-)
我升级到新的csproj格式(Visual Studio 2017,简单格式),然后开始出现此错误。csproj有一个特性,您不需要包含每个文件,而是默认情况下它包含文件夹下的所有相关文件,因此实体框架文件的处理方式相同,因此默认情况下这些文件不会嵌入到程序集中。
我需要手动将我的EDML文件的生成操作(如果是Microsoft Entity Framework,则为EDMX)更改为"devartentitydeploy"(我希望是针对Microsoft Entity Framework的EntityDeploy),并生成它,从而解决了我的问题。