我们有一个使用现有遗留数据库的 ef 项目,但使用 ef-migrations 向其中添加新表。对于这些实体,我们使用新模式创建表,以将它们与旧表分开。我们在 db 表上使用类名的复数形式的约定。但是,当我们添加要映射到遗留表(没有复数表名)的新类时,ef 似乎忽略了映射。实体类:
public class Aktor:IVersionedEntityWithId
{
public int Id { get; set; }
public string Navn { get; set; }
public byte[] Version { get; set; }
}
映射代码:
protected virtual void MapAktor(EntityTypeConfiguration<Tilsyn.Domain.Aktor> config){
config.ToTable("dbo.Aktor");
config.Property(v=>v.Version).IsConcurrencyToken().IsRowVersion();
config.HasKey(e=>e.Id);
}
例外:
System.Data.EntityCommandExecutionException:执行命令定义时出错。有关详细信息,请参阅内部异常。---> System.Data.SqlClient.SqlException:无效的对象名称“dbo.Aktors”。
似乎生成的 sql 仍然在类名中添加一个 s 来获取表名。这张照片中缺少什么?我用的ToTable
方法不对吗?
更新:将类名更改为表名以外的其他名称时,它似乎可以工作。再次改名后,问题就消失了。是否有 EF 缓存或隐藏的映射文件 somwehere?