使用Entity Framework代码优先方式创建数据库

3

我遇到了一个问题,想要使用Entity Framework的Code First来创建数据库。在最近的项目中,我成功地使用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" />

我认为“Data Source”应该包含我在SQL Server上登录时使用的信息。
当我尝试使用项目中的类创建数据库时,我使用“update-database -verbose”在程序包管理器控制台中创建它,并且针对正确的项目。这里说当我使用“update-database -verbose”: 目标数据库是:“HomeCinema”(数据源:.\SQLEXPRESS,提供程序:System.Data.SqlClient,来源:约定)
这里的数据源与我在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

你能发布你的 DbContext 吗? - deramko
现在使用我的DbContext更新了问题。 - konkret
执行该命令时,活动项目是否为包含显示的配置文件的项目? - CodeCaster
是的,它是CodeCaster。 - konkret
1个回答

0
如果您有两个项目,比如一个类库和一个引用它的 Web 应用程序。您需要将 app.config 中的连接添加到 Web 应用程序的 web.config 中。
当您使用 Package Manager Console 对类库进行目标设置时,您告诉 VS 查找在该程序集中定义的 DbContext,但连接字符串来自主 Web 应用程序。

非常感谢!现在它正在工作,数据库已经启动了! - konkret

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接