I'm using Entity Framework 4.3 code-first with Oracle. I'm getting the following error:
System.InvalidOperationException : The ForeignKeyAttribute on property 'WidgetSequence' on type 'WidgetDistributor.WidgetEntity' is not valid. The foreign key name 'WIDGETSEQUENCE_ID' was not found on the dependent type 'WidgetDistributor.WidgetEntity'. The Name value should be a comma separated list of foreign key property names.
My entities are like this:
[Table("WIDGETENTITIES")]
public class WidgetEntity {
[Column("WIDGETENTITY_ID")]
public int Id { get; set; }
[ForeignKey("WIDGETSEQUENCE_ID")]
public WidgetSequence Sequence { get; set; }
// and other properties that map correctly
}
[Table("WIDGETSEQUENCES")]
public class WidgetSequence {
[Column("WIDGETSEQUENCE_ID")]
public int Id { get; set; }
[Column("NUMBER")]
public int Number { get; set; }
}
My code seems correct. What have I done wrong, here?
There is a table called Users and it has a primary key called UserID.
There is another table called Directory, and it has a column called UserID which is defined as a foreign key to the Users table.
I'm able to use the ForeignKey annotation to map the foreign key like this:
If you don't want to use fluent syntax, there are three other ways of implementing the reference using data annotations (Personally I prefer data annotations as they seem easier to read and are written just above the property they are affecting):
1.1) Use ForeignKey (with an associated property) - version 1
1.2) Use ForeignKey (with an associated property) - version 2
2) You can also use the InversePropertyAttribute.
ForeignKey
attibute expects a property name in your class as the argument but you given the column name. Use fluent mappings.