我在应用程序的某处有以下代码。代码是这样的:
Hyperion.Data.MCQEntities _model = null;
const string K_MODEL = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;";
public Engine(string cnnstr)
{
//string connection =(new ConnectionStringBuilder(cnnstr)).ToString();
string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder
{
Metadata = K_MODEL, //"res://*",
Provider = "System.Data.SqlClient",
ProviderConnectionString = cnnstr,
}.ConnectionString;
_model = new Data.MCQEntities(connectionString);
_model.Connection.Open();
}
我不明白的问题是当我使用Metadata = "res://*"
时它会起作用,但是当我使用Metadata=K_MODEL
时,它根本不起作用。可能是什么问题?
答案 0 :(得分:0)
res//*
告诉EF,元数据作为资源嵌入到程序集中。如果你跳过它,EF正在寻找磁盘上的文件。 edmx的默认构建操作是在工件中嵌入工件,因此如果您没有更改,则此文件不在磁盘上,EF无法找到它们。