【发布时间】:2013-04-11 17:28:47
【问题描述】:
我尝试在同一个数据库中使用两个独立的不相关模型。以下是每个代码:
public class ImageDBContext : DbContext
{
public ImageDBContext()
: base("DefaultConnection")
{
}
public DbSet<ImageModel> Images { get; set; }
}
[Table("Images")]
public class ImageModel
{
[Key]
public int ID { get; set; }
public string Type { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string FileName { get; set; }
[NotMapped]
public HttpPostedFileBase Attachment { get; set; }
}
这是另一个模型
public class TestimonialDBContext : DbContext
{
public TestimonialDBContext()
: base("DefaultConnection")
{
}
public DbSet<Testimonial> Testimonials { get; set; }
}
[Table("Testimonials")]
public class Testimonial
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
当我访问一个模型的视图时,效果很好。哪个模型无关紧要,但是当我转到另一个模型的视图时,我会收到此错误:
支持“ImageDBContext”上下文的模型自数据库创建以来已更改。考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。
在我看来,两个模型都在尝试使用同一张桌子?该表由第一个初始化的模型创建,但随后第二个模型尝试使用现有表而不是创建自己的表。
如何让两个模型在数据库中使用它们自己的表?
这是连接字符串:
<add name="DefaultConnection" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=--------;User ID=-------;Password=---------" providerName="System.Data.SqlClient" />
更新:我已将以下代码添加到模型中,但仍然出现相同的错误。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ImageModel>().ToTable("ImagesTable");
}
和
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Testimonial>().ToTable("TestimonialsTable");
}
【问题讨论】:
-
连接字符串出现问题,您可以重新创建模型并在 webconfig 中添加连接字符串设计时间可能会解决您的问题
标签: c# asp.net-mvc database entity-framework