1

Ich habe ASP.NET Core 1.0 RTM-Projekt auf net461-Framework unter Verwendung der Klassenbibliothek 4.6.1, die Klassenbibliothek verfügt über Datenzugriffs-Repositories mit EF 6.1.Ungültiger Spaltenname 'User_User_Id'. Ungültiger Spaltenname 'Group_Group_Id'. EF6 Exception

Ich erhalte folgende Fehler: Ungültiger Spaltenname 'User_User_Id'. Ungültiger Spaltenname 'Group_Group_Id'.

Wenn rufen Sie die folgenden Repository-Code:

public ReviewWorkflow GetWorkflowWithActors(int reviewWorkflowId) 
    { 
     return DbContext.ReviewWorkflows.Include(a => a.ReviewWorkflowActors).Where(r => r.ReviewWorkflow_Id == reviewWorkflowId).FirstOrDefault(); 
    } 

Entities

public partial class ReviewWorkflow 
{ 
    public ReviewWorkflow() 
    { 
     this.ReviewWorkflowActors = new List<ReviewWorkflowActor>(); 
     this.ReviewWorkflowsProjects = new List<ReviewWorkflowsProject>(); 
    } 

    public int ReviewWorkflow_Id { get; set; } 
    public string Name { get; set; } 
    public string CreatedBy { get; set; } 
    public System.DateTime CreatedDate { get; set; } 
    public string UpdateBy { get; set; } 
    public Nullable<System.DateTime> UpdatedDate { get; set; } 
    public byte[] RowVersion { get; set; } 
    public int Owner_UserId { get; set; } 
    public User User { get; set; } 
    public ICollection<ReviewWorkflowActor> ReviewWorkflowActors { get; set; } 
    public ICollection<ReviewWorkflowsProject> ReviewWorkflowsProjects { get; set; } 

    public ReviewWorkflowView TransformToReviewWorkflowView() 
    { 
     return new ReviewWorkflowView() 
     { 
      Name = this.Name, 
      ReviewWorkflowActors = this.ReviewWorkflowActors.Select(r => r.TransformToReviewWorkflowActor()).ToList() 
     }; 
    } 
} 


public partial class ReviewWorkflowActor 
{ 
    public int ReviewWorkflowActor_Id { get; set; } 
    public int ReviewWorkflow_Id { get; set; } 
    public byte SequenceNo { get; set; } 
    public Nullable<int> Group_Id { get; set; } 
    public Nullable<int> User_Id { get; set; } 
    public string CreatedBy { get; set; } 
    public System.DateTime CreatedDate { get; set; } 
    public string UpdateBy { get; set; } 
    public Nullable<System.DateTime> UpdatedDate { get; set; } 
    public byte[] RowVersion { get; set; } 
    public ReviewWorkflow ReviewWorkflow { get; set; } 

    public ReviewWorkflowActorView TransformToReviewWorkflowActor() 
    { 
     return new ReviewWorkflowActorView() { 
      Group_Id = this.Group_Id, 
      SequenceNo = this.SequenceNo, 
      User_Id = this.User_Id 
     }; 
    } 
} 

Karte:

public class ReviewWorkflowMap : EntityTypeConfiguration<ReviewWorkflow> 
{ 
    public ReviewWorkflowMap() 
    { 
     // Primary Key 
     this.HasKey(t => t.ReviewWorkflow_Id); 

     // Properties 
     this.Property(t => t.Name) 
      .IsRequired() 
      .HasMaxLength(1000); 

     this.Property(t => t.CreatedBy) 
      .IsRequired() 
      .HasMaxLength(50); 

     this.Property(t => t.UpdateBy) 
      .HasMaxLength(50); 

     this.Property(t => t.RowVersion) 
      .IsRequired() 
      .IsFixedLength() 
      .HasMaxLength(8) 
      .IsRowVersion(); 

     // Table & Column Mappings 
     this.ToTable("ReviewWorkflows", "Weekly"); 
     this.Property(t => t.ReviewWorkflow_Id).HasColumnName("ReviewWorkflow_Id"); 
     this.Property(t => t.Name).HasColumnName("Name"); 
     this.Property(t => t.CreatedBy).HasColumnName("CreatedBy"); 
     this.Property(t => t.CreatedDate).HasColumnName("CreatedDate"); 
     this.Property(t => t.UpdateBy).HasColumnName("UpdateBy"); 
     this.Property(t => t.UpdatedDate).HasColumnName("UpdatedDate"); 
     this.Property(t => t.RowVersion).HasColumnName("RowVersion"); 
     this.Property(t => t.Owner_UserId).HasColumnName("Owner_UserId"); 

     // Relationships 
     this.HasRequired(t => t.User) 
      .WithMany(t => t.ReviewWorkflows) 
      .HasForeignKey(d => d.Owner_UserId); 

    } 
} 


public class ReviewWorkflowActorMap : EntityTypeConfiguration<ReviewWorkflowActor> 
{ 
    public ReviewWorkflowActorMap() 
    { 
     // Primary Key 
     this.HasKey(t => t.ReviewWorkflowActor_Id); 

     // Properties 
     this.Property(t => t.CreatedBy) 
      .IsRequired() 
      .HasMaxLength(50); 

     this.Property(t => t.UpdateBy) 
      .HasMaxLength(50); 

     this.Property(t => t.RowVersion) 
      .IsRequired() 
      .IsFixedLength() 
      .HasMaxLength(8) 
      .IsRowVersion(); 

     // Table & Column Mappings 
     this.ToTable("ReviewWorkflowActors", "Weekly"); 
     this.Property(t => t.ReviewWorkflowActor_Id).HasColumnName("ReviewWorkflowActor_Id"); 
     this.Property(t => t.ReviewWorkflow_Id).HasColumnName("ReviewWorkflow_Id"); 
     this.Property(t => t.SequenceNo).HasColumnName("SequenceNo"); 
     this.Property(t => t.Group_Id).HasColumnName("Group_Id"); 
     this.Property(t => t.User_Id).HasColumnName("User_Id"); 
     this.Property(t => t.CreatedBy).HasColumnName("CreatedBy"); 
     this.Property(t => t.CreatedDate).HasColumnName("CreatedDate"); 
     this.Property(t => t.UpdateBy).HasColumnName("UpdateBy"); 
     this.Property(t => t.UpdatedDate).HasColumnName("UpdatedDate"); 
     this.Property(t => t.RowVersion).HasColumnName("RowVersion"); 

     // Relationships 
     this.HasRequired(t => t.ReviewWorkflow) 
      .WithMany(t => t.ReviewWorkflowActors) 
      .HasForeignKey(d => d.ReviewWorkflow_Id); 

    } 
} 

Andere:

[DbConfigurationType(typeof(EFDbConfiguration))] 
public class EWRSContext : DbContext 
{ 
    public EWRSContext() 
     : base(_connectionString) 
    { 
     this.Configuration.LazyLoadingEnabled = false; 
    } 
    public DbSet<Murad> Muradies { get; set; } 
    public DbSet<PositionHierarchy> PositionHierarchy { get; set; } 
    public DbSet<User> Users { get; set; } 
    public DbSet<OrganizationHierarchy> OrganizationHierarchy { get; set; } 
    public DbSet<Delegation> Delegations { get; set; } 
    public DbSet<GroupPermission> GroupPermissions { get; set; } 
    public DbSet<Group> Groups { get; set; } 
    public DbSet<GroupUser> GroupUsers { get; set; } 
    public DbSet<Permission> Permissions { get; set; } 
    public DbSet<Configuration> Configurations { get; set; } 
    public DbSet<Notification> Notifications { get; set; } 
    public DbSet<NotificationsUser> NotificationsUsers { get; set; } 
    public DbSet<Project> Projects { get; set; } 
    public DbSet<ProjectStatus> ProjectStatuses { get; set; } 
    public DbSet<ReviewWorkflowInstance> ReviewWorkflowInstances { get; set; } 
    public DbSet<ReviewWorkflow> ReviewWorkflows { get; set; } 
    public DbSet<ReviewWorkflowsProject> ReviewWorkflowsProjects { get; set; } 
    public DbSet<Subject> Subjects { get; set; } 
    public DbSet<SubjectStatus> SubjectStatuses { get; set; } 
    public DbSet<TeamModel> TeamModels { get; set; } 
    public DbSet<TeamModelSubject> TeamModelSubjects { get; set; } 
    public DbSet<Template> Templates { get; set; } 
    public DbSet<WeeklyInput> WeeklyInputs { get; set; } 
    public DbSet<WeeklyInputHistory> WeeklyInputHistories { get; set; } 
    public DbSet<BusinessUnitesView> BusinessUnitesViews { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

     //Murad :: Fluent API configuration goes here 
     modelBuilder.Configurations.Add(new PositionHierarchyMap()); 
     modelBuilder.Configurations.Add(new UserMap()); 
     modelBuilder.Configurations.Add(new OrganizationHierarchyMap()); 
     modelBuilder.Configurations.Add(new DelegationMap()); 
     modelBuilder.Configurations.Add(new GroupPermissionMap()); 
     modelBuilder.Configurations.Add(new GroupMap()); 
     modelBuilder.Configurations.Add(new GroupUserMap()); 
     modelBuilder.Configurations.Add(new PermissionMap()); 
     modelBuilder.Configurations.Add(new ConfigurationMap()); 
     modelBuilder.Configurations.Add(new NotificationMap()); 
     modelBuilder.Configurations.Add(new NotificationsUserMap()); 
     modelBuilder.Configurations.Add(new ProjectMap()); 
     modelBuilder.Configurations.Add(new ProjectStatusMap()); 
     modelBuilder.Configurations.Add(new ReviewWorkflowInstanceMap()); 
     modelBuilder.Configurations.Add(new ReviewWorkflowMap()); 
     modelBuilder.Configurations.Add(new ReviewWorkflowsProjectMap()); 
     modelBuilder.Configurations.Add(new SubjectMap()); 
     modelBuilder.Configurations.Add(new SubjectStatusMap()); 
     modelBuilder.Configurations.Add(new TeamModelMap()); 
     modelBuilder.Configurations.Add(new TeamModelSubjectMap()); 
     modelBuilder.Configurations.Add(new TemplateMap()); 
     modelBuilder.Configurations.Add(new WeeklyInputMap()); 
     modelBuilder.Configurations.Add(new WeeklyInputHistoryMap()); 
     modelBuilder.Configurations.Add(new BusinessUnitesViewMap()); 
     modelBuilder.Configurations.Add(new MuradConfigurationMap()); 
     modelBuilder.Configurations.Add(new ReviewWorkflowActorMap()); 

    } 

    //Add Db Custom validation Errors 
    protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary<object, object> items) 
    { 
     //validate Project Data Insertion 
     if (entityEntry.Entity is Project && (entityEntry.State == EntityState.Added || entityEntry.State == EntityState.Modified)) 
     { 
      var dbErrors = new ProjectValidator().Validate(entityEntry); 
      if (dbErrors != null) 
       return dbErrors; 
     } 


     return base.ValidateEntity(entityEntry, items); 

    } 


} 
+0

Ich glaube, dass Sie eine ShadowProperty treffen und da Sie 2 Eigenschaften als 'Nullable 'haben, die sich auf die jeweiligen Typen beziehen, glaube ich, dass EFC sagt, wo sie auf dem Tisch sind, weil es denkt, dass sie da sein sollen. Haben Sie versucht, die DbContext-Erstellungstools von Ihrer vorhandenen DB mit EFC zu verwenden? Package Manager Console Befehle haben sie https://docs.efproject.net/en/latest/miscellaneous/cli/powershell.html#scaffold-dbcontext – mvermef

+0

Denken Sie daran, keine faulen oder expliziten Laden, so dass es auch andere Sachen, die so notwendig sind fehlt Include/ThenInclude (möglicherweise erforderlich). – mvermef

+0

Es tut mir leid, ich bin neu in EF6, ich habe keinen Schatten Eigenschaft, ich habe ef Power Tool für VS 2015 (nach der Änderung), um meinen Kontext zu generieren. –

Antwort

1

Was auch immer Sie versuchen, es zu tun scheint seine auf die Beziehung mit verwandten

public User User { get; set; }

in ReviewWorkflow

und

mit

public Nullable<int> Group_Id { get; set; } public Nullable<int> User_Id { get; set; } < in ReviewWorkflowActor zugeordnet --- Hauptproblem versucht, durch Konvention

zu kartographieren

Diese beiden NULL-Zeichen sind Ihr aktuelles Problem, da weder bekannt ist, woher Group_Id stammt, noch User_Id, wie diese beiden Spalten den Spalten in Ihren Tabellen zugeordnet werden können, da sie in Ihren beiden Tabellen nicht vorhanden sind gezeigt.

EF weiß nicht, wie man sie löst, daher Ihr Fehler, die Beziehung wahrscheinlich mit Fremdschlüsselproblemen zusammenhängt, kann es auch mit Gruppen/Benutzer Tabellen zu tun haben.

Verwandte Themen