2014-04-01 2 views
0

Вот мои моделиОшибка при добавлении внешнего ключа из MVC модели

[Table("Stationery")] 
public class Stationery 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

[Table("Orders")] 
public class Order 
{ 
    [Key] 
    public int CustomerID { get; set; } 
    [ForeignKey("Stationery")] 
    public int ID { get; set; } 
    public int Quantity { get; set; } 
} 

При добавлении контроллера к Приказу я получаю следующее сообщение об ошибке ...

о том, что:

Невозможно получить метаданные для моделей. Атрибут внешнего ключа для идентификатора свойства 'type.Order' недействителен. Свойство навигации «Канцелярские принадлежности» не было найдено на зависимом типе «Models.Order». Значение имени должно быть допустимым именем свойства навигации.

Пожалуйста, помогите !!

Thank you.

ответ

0

Создайте свою модель, как это, чтобы добавить отношения, ваши оба не знают о связи, это будет работать, если его один к одному соотношение:

[Table("Stationery")] 
public class Stationery 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public Order Order {get;set;} 
} 

[Table("Orders")] 
public class Order 
{ 
    [Key] 
    public int CustomerID { get; set; } 
    [ForeignKey("Stationery")] 
    public int ID { get; set; } 
    public int Quantity { get; set; } 
    public virtual Stationery Stationery { get; set; } 
} 

если отношения один ко многим сделать так:

[Table("Stationery")] 
public class Stationery 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public ICollection<Order> Orders {get;set;} 
} 

[Table("Orders")] 
public class Order 
{ 
    [Key] 
    public int CustomerID { get; set; } 
    [ForeignKey("Stationery")] 
    public int ID { get; set; } 
    public int Quantity { get; set; } 
    public virtual Stationery Stationery { get; set; } 
} 
+0

Спасибо, я получил это, но после того, как эти изменения я getti ng another Ошибка: «Оператор INSERT противоречил ограничению FOREIGN KEY« FK_dbo.Orders_dbo.Stationery_ID ». Конфликт произошел в базе данных «MvcDemo1.Models.OrderDbContext», в таблице «dbo.Stationery», в столбце «ID». Заявление было прервано: « – Chakri

+0

неправильное значение вашего внешнего ключа означает, что если вы передаете идентификатор заказа 0 и этот идентификатор не находится в таблице заказа, вы получите эту ошибку при вставке –

0

Try код изменения, как это:

public class Stationery 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public virtual IList<Order> Orders { get; set; } 
} 

public class Order 
{ 
    [Key] 
    public int CustomerID { get; set; } 
    public virtual Stationery Stationery { get; set; } 
    public int Quantity { get; set; } 
}