Ответ 1
Вы уверены, что настроены на платформу .NET 4.5 Framework. ForeignKeyAttribute доступен только в .NET 4.5
У меня возникает проблема в Visual Studio 2012, которая включает пространство имен System.ComponentModel.DataAnnotations.Schema. Он говорит мне, что ForeignKeyAttribute не может быть разрешен, решение в прошлом заключалось в том, чтобы добавить оператор using, который прокомментирован ниже. VS2012 не может разрешить пространство имен схемы, как это было VS2010. Что-то изменилось в последних выпусках .Net, которые могут вызвать эту проблему? Если да, то как мне обойти их?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
// using System.ComponentModel.DataAnnotations.Schema;
namespace Data
{
public class AffiliateUser
{
[Key, ForeignKey("User")]
public int UserId { get; set; }
[StringLength(50)]
public string AffiliateUserKey { get; set; }
public Guid ApiKey { get; set; }
public string PasswordHash { get; set; }
public bool IsDeleted { get; set; }
}
}
Вы уверены, что настроены на платформу .NET 4.5 Framework. ForeignKeyAttribute доступен только в .NET 4.5
Я переустановил Entity Framework, и он работает!
Ваш код и пространство имен System.ComponentModel.DataAnnotations.Schema
верны.
Итак, проверьте свои рекомендации. Это должно быть в Assembly System.ComponentModel.DataAnnotations.dll, v4.0.0.0
Вы обновили проект с Fx 4?
Вы можете исправить версию с помощью NuGet.
Вы можете найти сборку в разделе "Ссылки" проекта. Перейдите на вкладку "Структура" и выполните поиск сборки. Это сборка по умолчанию из Microsoft.Net framework.
Мой проект был построен с.NET 4.5, и мне пришлось понизить проект до.NET 4.0. Поэтому мой пакет NuGet для EntityFramework ссылался на версию.NET 4.5 после понижения.
Я удалил EntityFramework и переустановил его с помощью "Управление пакетами NuGet для решения..." (щелкнув правой кнопкой мыши на решении в VS2017), и моя проблема была решена.
У меня недавно был такой же вопрос. Для чего это стоит, я бы прокомментировал ответ о повторной установке Entity Framework, но я не могу комментировать.
Это просто для того, чтобы предоставить немного больше контекста/информации для этого ответа, поскольку он дал мне что-то попробовать, но не дал достаточно подробностей о том, как это сделать или почему это нужно сделать.
Удалите уже добавленную ссылку System.ComponentModel.DataAnnotations и включите ее снова.
Если он все еще не работает, полностью удалите инфраструктуру сущности и переустановите ее через менеджер nuget.