要使用「默認的慣例基於映射」下面的方法2將工作:
1) 碰撞通過使用通配符連接字符串引起:
metadata=res://*/Repositories.EntityFramework.Model.csdl|res://*/Repositories.EntityFramework.Model.ssdl|res://*/Repositories.EntityFramework.Model.msl;
由於*確實不工作你的項目,你可以定義多個連接字符串來硬編碼包含edmx的程序集。
2)創建一個幫助
public static EntityConnection GetEfConnectionString(this string sqlConnectionString)
{
var cs = string.Format(@"metadata=res://{0}/Repositories.EntityFramework.Model.csdl|res://{0}/Repositories.EntityFramework.Model.ssdl|res://{0}/Repositories.EntityFramework.Model.msl;provider=System.Data.SqlClient;provider connection string=""" + sqlConnectionString + @"""",
Assembly.GetCallingAssembly().FullName
);
return new EntityConnection(cs);
}
更新2017年:
public static string GetEfConnectionString(this string sqlConnectionString, Type type)
{
string cs =
string.Format(
@"metadata=res://{0}/Models.Model.csdl|res://{0}/Models.Model.ssdl|res://{0}/Models.Model.msl;provider=System.Data.SqlClient;provider connection string=""" +
sqlConnectionString + @"""",
type.Assembly.FullName
);
return cs;
}
// usage: don't "new" EntityConnection. See 2012 comment.
string connString = ConfigurationManager.ConnectionStrings["sqlConnection"].ConnectionString.GetEfConnectionString();
using(var entities = new XyzEntities(connString))
在設計器中更改其中一個實體名稱是否會解決此問題?不過,這似乎有點不方便。 – 2010-11-01 13:24:06
我希望有一個不同的解決方案。這是一個數據庫轉換應用程序(從舊數據庫到新數據庫),因此有相同的表名。除了結束了錯誤的類型名稱之外,在設計器中重命名它們意味着在新的應用程序中會進行一些嚴重的重構。 – Carvellis 2010-11-01 13:30:05
我有不同的實體名稱相同的問題... – juanora 2016-11-25 09:59:45