当代码首次使用表名"Object"进行逆向工程时出了什么问题

Mei*_*idi 1 entity-framework

我使用Entity Framework Power Tools Beta 2来逆向工程Code First.在DB中有一个表名"Object".

当我测试时,它给了我这个错误:

未映射"TestEFPowerTools.Models.Object"类型.使用Ignore方法或NotMappedAttribute数据批注检查未明确排除类型.验证类型是否已定义为类,不是原始类,嵌套类还是通用类,并且不从EntityObject继承.

我发表评论后

public DbSet<Object> Objects { get; set; }

modelBuilder.Configurations.Add(new ObjectMap());
Run Code Online (Sandbox Code Playgroud)

在Context文件中,一切正常.我该如何修复它还是电动工具中的错误?

Mar*_*eta 5

对象是C#中的保留字,C#是所有内容的基类,尽管您可以通过将类重命名为除对象之外的其他内容并使用流畅或数据注释映射到对象表来解决此问题.如果可能,我会重命名表.

将您的类名从Object更改为其他名称,例如ObjectData.将对Object的所有引用重命名为ObjectData:

public class ObjectData ()
{

}

public DbSet<ObjectData> ObjectDatas {get;set;}
Run Code Online (Sandbox Code Playgroud)

在配置中,将映射添加到其他表:

public class ObjectData Map : EntityTypeConfiguration<ObjectData>
{
  public ObjectDataMap()
   {
     //other mappings
     this.ToTable("Object");
   }

}
Run Code Online (Sandbox Code Playgroud)

  • Nit:`Object`是*不是*保留字.`object`是.`object`*通常*重新解析为`System.Object`,但这可以用不同的`使用`来改变..虽然我怀疑将它映射到另一个名称仍然可以解决/避免问题. (2认同)