我使用oracle数据库在vs 2010中使用实体框架在Asp.net中工作。我从实体框架工作datacontext的代码提供连接字符串。这是我的代码:
public static string getConStrSQL()
{
//string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder
string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder
{
Metadata = "res://*",
Provider = "Oracle.ManagedDataAccess.Client",
//Provider = "Oracle.DataAccess.Client",
ProviderConnectionString = new System.Data.SqlClient.SqlConnectionStringBuilder
{
//InitialCatalog = "ORCL",
DataSource = "MONOJ-PC:1521/ORCL",
//IntegratedSecurity = false,
UserID = "C##MONOJ", // User ID such as "sa"
Password = "Thanks123", // hide the password
}.ConnectionString
}.ConnectionString;
return connectionString;
}
public List<CUSTOMER> GetCustomerList()
{
using (Entities db = new Entities())
{
db.Connection.ConnectionString = getConStrSQL();
db.Connection.Open();
var data = from p in db.CUSTOMERs
select p;
db.Connection.Close();
return data.ToList();
}
}
但是当我运行代码时,我得到以下错误:
指定的架构无效。错误: 错误0194:加载到ItemCollection中的所有工件必须具有相同的版本。遇到了多个版本。 DAL.DBModel.ssdl(2,46):错误0172:所有SSDL工件必须以同一提供程序为目标。提供商&#39; Oracle.DataAccess.Client&#39;不同于Oracle.DataAccess.Client&#39;那是早先遇到的。 DAL.DBModel.ssdl(2,89):错误0169:所有SSDL工件必须以同一提供程序为目标。 ProviderManifestToken&#39; 12.1&#39;不同于&#9.2; 9.2&#39;那是早先遇到的。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(3,4):错误0019:EntityContainer名称必须是唯一的。一个名为&#39; Schema&#39;的EntityContainer已定义。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(834,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.Table&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(844,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.TableColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(870,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.View&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(882,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ViewColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(908,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.Function&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(933,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.Procedure&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(943,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.Parameter&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(967,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.Constraint&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(979,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.CheckConstraint&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(987,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ConstraintColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(996,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ForeignKeyConstraint&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1005,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ForeignKey&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1016,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ViewConstraint&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1031,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.TableTableConstraint&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1044,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ConstraintConstraintColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1057,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ConstraintForeignKey&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1070,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.FromForeignKeyColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1083,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ToForeignKeyColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1096,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.TableTableColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1109,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ViewViewColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1122,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.FunctionFunctionParameter&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1135,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ProcedureProcedureParameter&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1148,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ViewViewConstraint&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1161,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ViewConstraintConstraintColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1174,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ViewConstraintForeignKey&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1187,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.FromForeignKeyViewColumn&#39;已经定义了。 Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl(1200,4):错误0019:架构中的每个类型名称必须是唯一的。输入名称&#39; Oracle.ToForeignKeyViewColumn&#39;已经定义了。
我用谷歌搜索但无法得到任何答案。 请帮我。它是银色的。
答案 0 :(得分:1)
检查您的项目引用 - 您可能包含一个“带来”它自己的数据库/模式的项目。如:
project_a.edmx
project_b.edmx
版本X和Y可能不同。
这可能是由于根据.NET / EF版本生成的不同连接字符串 - 请参阅更多http://weblogs.asp.net/kencox/schema-specified-is-not-valid-error-on-upgrading-to-asp-net-4
答案 1 :(得分:1)
我知道这个answare已经很晚了,但我希望它可以作为未来的参考资料。
我遇到了同样的问题,我发现问题在于正确指定元数据:
string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder
{
Metadata = "res://*/Models.ModelKDM.csdl|res://*/Models.ModelKDM.ssdl|res://*/Models.ModelKDM.msl",
Provider = "Oracle.DataAccess.Client",
ProviderConnectionString = new System.Data.SqlClient.SqlConnectionStringBuilder
{
DataSource = server,
UserID = user,
Password = pass,
}.ConnectionString
}.ConnectionString;
return connectionString;