Keyword not supported: 'metadata'.? with Sql Connection in Entityt Framework with MVC3

后端 未结 4 1707
时光取名叫无心
时光取名叫无心 2020-12-15 19:51

I am using Entity Framework 4 with my Asp.Net MVC3 application. My problem is that I am using Entity Framework to perform action with my database , That i

相关标签:
4条回答
  • 2020-12-15 20:33

    Theres a better solution here, use the Entity Framework Power tools, reverse engineer your database into your project, then you can use a single EF connection string (which is a normal connection string) for both scenarios.

    0 讨论(0)
  • 2020-12-15 20:38

    The connection string for ADO.NET (in this case SqlConnection) doesn't take that format. You're using the one specific for Entity Framework. The ADO.NET one should be something like:

    "data source=KAPS-PC\KAPSSERVER;initial catalog=vibrant;integrated security=True"
    

    So, to sum it up, you need two separate connection strings, one for EF and one for ADO.NET

    0 讨论(0)
  • 2020-12-15 20:42

    Another option (other than 2 separate connection strings for the same thing) is to build a method that returns an ADO.NET connection string from your Entity Framework object:

    using System.Data.EntityClient;
    using System.Data.SqlClient;
    ...
    private string GetADOConnectionString()
    {
        SalesSyncEntities ctx = new SalesSyncEntities(); //create your entity object here
        EntityConnection ec = (EntityConnection)ctx.Connection;
        SqlConnection sc = (SqlConnection)ec.StoreConnection; //get the SQLConnection that your entity object would use
        string adoConnStr = sc.ConnectionString;
        return adoConnStr;
    }
    

    (I place this somewhere in my Class Library where my edmx files are)

    (I got this from http://justgeeks.blogspot.com/2009/11/getting-sqlconnection-from.html)

    Or even better... if your SQLConnection stuff are manual SQL queries, skip the SQLConnection entirely via the ExecuteStoredCommand:

    new AdventureEntities().ExecuteStoreCommand(
            @"    UPDATE Users
                  SET lname = @lname 
                  WHERE Id = @id",
            new SqlParameter("lname", lname), new SqlParameter("id", id));
    

    (I got this from Entity Framework getting an sql connection)

    0 讨论(0)
  • 2020-12-15 20:43

    You connection string is specific to Entity Framework and contains metadata. You need to get your provider connection string from it. You can do it using EntityConnectionStringBuilder:

    var efConnectionString = "Your Entity Framework connection string";
    var builder = new EntityConnectionStringBuilder(efConnectionString);
    var regularConnectionString = builder.ProviderConnectionString;
    
    0 讨论(0)
提交回复
热议问题