我有3个表的简单上下文。
数据库表已经存在,但使用代码优先方法。
模型Device.cs是-
public class Device
{
public System.Guid Id { get; set; }
public string Name{ get; set; }
}
public class sampledbContext : DbContext
{
public sampledbContext ()
: base("name=sampledbContext ")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public virtual DbSet<Device> Devices { get; set; }
}
为避免多余的s
,我已在OnModelCreating
的上方添加了行,但它给出了错误-
System.InvalidOperationException: 'The model backing the 'sampledbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).'
数据库已经创建,我尝试在这里使用代码优先方法。 我还没有完成更新数据库。
我尝试做Enable-Migration
和Update-database
,它创建了名称为s
的表,就像Devices
一样吗?已添加s
吗?
答案 0 :(得分:2)
您已关闭该行中的自动迁移:
Database.SetInitializer<IoTSimulatordbContext>(null);
因此,您将需要手动运行update-database来更新模型(可以通过程序包管理器控制台来运行它)。如果表中有任何数据,由于丢失数据的可能性,迁移可能会失败,在这种情况下,您将需要先从表中删除所有数据,或者制作一个自定义迁移脚本来处理复制数据第一。由于这似乎是一种考验,所以最好从一开始就重新启动迁移项目。
答案 1 :(得分:1)
您可以向这样的Table类添加DataAnnotation来描述Schema和Table名称;
[Table(“ Device”,Schema =“ MySchema”)]
这将使您更好地控制命名。