动态创建连接字符串EF6.0会导致问题

时间:2014-01-07 21:11:23

标签: c# asp.net entity-framework-6

我在应用程序的某处有以下代码。代码是这样的:

    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时,它根本不起作用。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

res//*告诉EF,元数据作为资源嵌入到程序集中。如果你跳过它,EF正在寻找磁盘上的文件。 edmx的默认构建操作是在工件中嵌入工件,因此如果您没有更改,则此文件不在磁盘上,EF无法找到它们。