SQL Server 2008 connection string for entity framework 4.1 code first

好久不见. 提交于 2019-12-03 09:13:15

问题


I need a valid SQL Server 2008 connection string for Entity Framework 4.1 code-first project. I would use it now with MVC 3.

For now it's still very simple, only 1 project, 3 simple model class...

I could only find everything else, like Sql Express, CE connections on the web...

Finding it by name in web.config ("ApplicationServices") is OK, because when I tried to use I got specific errors for that.

The best I could get is:

Unable to load the specified metadata resource.

I tried to give it like metadata=res://MyWebProject/MyWebProject.csdl| ... also but no success.

So it doesn't create the database for me - even doesn't hit the OnModelCreating(DbModelBuilder modelBuilder) method.

If I try to use an 'old fashioned' connection like the ones I found for SQL Server Express, it misses the metadata.

Thanks for your help in advance.


回答1:


The idea of "Code-First" is, that you shouldn't have to deal with the .csdl, .ssdl and .msl files mentioned in the connection-string. If not specified elsewhere, the DbContext will lookup the connection-string in the web.config as you described. The constructor of the DbContext class will accept a name-value pair specifiying the name of the connection-string in the web.config. For example:

<connectionStrings>
    <add name="ConnectionName" 
         providerName="System.Data.SqlClient"
         connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" />
</connectionStrings>

can be referenced in your context:

class MyContext : DbContext
{
     public MyContext() : base("name=ConnectionName") { }
     ...
}

The sample connection-string I've provided is actually for a SQL Server database. It is important to specify the ProviderName, since the "Code-First" requires it to generate a corresponding .ssdl-File (storage schema).




回答2:


Besides, you can name your connection string after your DbContext class. In this case you may not mention the name of the connection string

class MyContext : DbContext
{
     //public MyContext() : base("name=ConnectionName") { } // not needed
     ...
}

and the connection string is the folowing

<connectionStrings>
    <add name="MyContext" 
         providerName="System.Data.SqlClient"
         connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" />
</connectionStrings> 


来源:https://stackoverflow.com/questions/6575976/sql-server-2008-connection-string-for-entity-framework-4-1-code-first

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!