Reputation: 3278
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; }
}
Upvotes: 6
Views: 23007
Reputation: 16
I had a similar problem, which was caused by wrongly specifying the primary keys of the table.
Upvotes: 0
Reputation: 307
If all solutions provided above fails, just delete the migrations folder and recreate the migrations. This error may arise due to visual studio cache references.
One could alternatively rename the property on the target entity.
Upvotes: -1
Reputation: 1819
For my situation, I misused ForeignKey attribute:
[IgnoreMap]
public long? PLCalculationMasterId { get; set; }
[ForeignKey("PLCalculationMaster"), IgnoreMap, IgnoreDataMember]
public PLCalculationMaster PLCalculationMaster{ get; set; }
whereas it should have been:
[IgnoreMap]
public long? PLCalculationMasterId { get; set; }
[ForeignKey("PLCalculationMasterId"), IgnoreMap, IgnoreDataMember]
public PLCalculationMaster PLCalculationMaster{ get; set; }
Upvotes: 5
Reputation: 32079
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.
Upvotes: 3