首先使用实体​​框架代码创建数据库

时间:2015-09-16 11:33:54

标签: c# entity-framework

我偶然发现了一个问题,我想先使用Entity Framework代码创建数据库。在最近的项目中,我没有使用EF成功连接到我的数据库,但现在出了问题。

我创建了我的app.config文件,其中包含以下内容:

 <connectionStrings>
<add name="HomeCinema" 
     connectionString="Data Source= {MY SERVER NAME IN MSSQL};Initial
     Catalog=HomeCinema;Integrated Security=SSPI; MultipleActiveResultSets=true" 
     providerName="System.Data.SqlClient" />

我认为数据源应包含我在SQL Server上登录的内容。

当我尝试在项目中使用我的类创建数据库时,我使用update-database -verbose在Package Manager控制台中创建它,并且我定位正确的项目。

这里说当我使用update-database -verbose: 目标数据库是:&#39; HomeCinema&#39; (DataSource:。\ SQLEXPRESS,Provider:System.Data.SqlClient,Origin:Convention)

这里的DataSource与我在App.config文件中指定的不同。我认为那里有一些问题,但我们无法弄清楚。

我之前没有采用过这种方式,而且我希望修复它的未知领域,但似乎无法理解为什么会发生这种情况或如何解决它。

希望我已经清楚地描述了这个问题,但请问是否有遗漏。

如果我能够收到一些指导方针或一些如何解决此问题的提示,或者是否有其他方法可以创建数据库,我将非常感激。

我的DbContext类:

public class HomeCinemaContext : DbContext
{
    public HomeCinemaContext() 
        : base("HomeCinema")
    {
        Database.SetInitializer<HomeCinemaContext>(null);
    }
    #region Entity Sets 
    public IDbSet<User> UserSet { get; set; }
    public IDbSet<Role> RoleSet { get; set; }
    public IDbSet<UserRole> UserRoleSet { get; set; }
    public IDbSet<Customer> CustomerSet { get; set; }
    public IDbSet<Movie> MovieSet { get; set; }
    public IDbSet<Genre> GenreSet { get; set; }
    public IDbSet<Stock> StockSet { get; set; }
    public IDbSet<Rental> RentalSet { get; set; }
    public IDbSet<Error> ErrorSet { get; set; }
    #endregion

1 个答案:

答案 0 :(得分:0)

如果您有两个项目,那么我们假设一个类库和一个引用它的Web应用程序。您需要将app.config中的连接添加到Web应用程序中的web.config。

使用程序包管理器控制台定位类库时,您要告诉VS查找该程序集中定义的DbContext,但连接字符串来自主Web应用程序。