实体框架代码第一数据库表don';t在现有数据库上生成

本文关键字:数据库 代码 框架 实体 don | 更新日期: 2023-09-27 17:50:39

嗨,我第一次使用实体框架代码,生成表时遇到问题。我在MVC3应用程序的App_Data中创建了一个空数据库。这是我创建的模型:

 public class Brand {
    public int BrandId { get;set; }
    public string BrandName { get;set; }
}
public class Model
{
    public int ModelId { get;set; }
    public Brand BrandId { get;set; }
    public Category CategoryId { get;set; }
    public string ModelName { get;set; }
}
public class Category
{
    public int CategoryId { get;set; }
    public string CategoryName { get;set; }
}

这是dbContext:

public class CarsEntities : DbContext{
    public DbSet<Brand> Brands { get;set; }
    public DbSet<Model> Models { get;set; }
    public DbSet<Category> Categories {get;set;} 
}

这是web.config中的connectionString:

<connectionStrings>
      <add name="CarsEntities" connectionString="Data Source='D:'Projects IDE'Visual Studio'MyWork'Websites'SellCars'SellCars'App_Data'Cars.sdf'" providerName="System.Data.SqlClient" />      
 </connectionStrings>

现在我已经在HomeController中初始化了CarsEntities,但似乎没有生成任何表。我做错了什么?

实体框架代码第一数据库表don';t在现有数据库上生成

我认为问题出现在您的中

webcofig 

如果您想将数据库用作类似mdf文件的数据库文件特别是在dtasource

       `<add name="CarsEntities"  connectionString="data source=.'SQLEXPRESS; Integrated
 Security=SSPI;AttachDBFilename=|yourDirectoryDirectory|'thenameofyourdb.mdf;User
 Instance=true"  providerName="System.Data.SqlClient" /`>

首先,由于您使用的是SQL Server Compact,因此需要将提供程序名称更改为使用Compact而不是SQL Server:

<add name="CarsEntities" connectionString="Data Source='D:'Projects IDE'Visual Studio'MyWork'Websites'SellCars'SellCars'App_Data'Cars.sdf'" providerName="System.Data.SqlServerCe.4.0" />

接下来,您将需要在Application_Start代码中的某个位置使用数据库初始化器,该初始化器告诉实体框架是否创建数据库表以及重新创建数据库表的频率。请参阅此处:

http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm

http://msdn.microsoft.com/en-us/data/jj591621.aspx