Search code examples
c#sql-serverentity-frameworkmigration

Property or navigation with the same name already exists on entity type - how to add foreign keys in migration scenario of Entity Framework


I have this class with only the foreign key references:

public class Device
{
    [Required]
    [DataMember(Name = "key")]
    [Key]
    public Guid Key { get; set; }

    [ForeignKey("DeviceType")]
    [IgnoreDataMember]
    public virtual DeviceType DeviceType { get; set; }

    [ForeignKey("Model")]
    [IgnoreDataMember]
    public virtual ModelType Model { get; set; }
}

I get an error while running the command

 Add-Migration -Name "DeviceMigration"

Error is:

The property or navigation 'DeviceType' cannot be added to the entity type 'Device' because a property or navigation with the same name already exists on entity type 'Device'.

This is my context class content

 public class MyContext: DbContext
 {
     public MyContext(DbContextOptions<MyContext> options)
        : base(options)
     { }

     public DbSet<DeviceType> DeviceTypes { get; set; }
     public DbSet<Device> Devices { get; set; }
 }

Solution

  • Write your Device model class as follows:

    public class Device
    {
        [Required]
        [DataMember(Name = "key")]
        [Key]
        public Guid Key { get; set; }
    
    
        [ForeignKey("DeviceType")]   
        public Guid DeviceTypeId { get; set; } // I assumed primary key of your `DeviceType` entity is `Guid`
    
        [ForeignKey("ModelType")]  
        public Guid ModelTypeId { get; set; } // I assumed primary key of your `ModelType` entity is `Guid`
    
    
        [IgnoreDataMember]
        public virtual DeviceType DeviceType { get; set; }
    
    
        [IgnoreDataMember]
        public virtual ModelType ModelType { get; set; }
    }
    

    Now generate the migration. Hope everything will work fine.