2015-06-02 2 views
0

Я использую Entity Framework 5 для доступа к данным SQL Server 2008 R2 в приложении MVC 4. Это мой T_Attribute класс: «„Атрибут“EntityType не имеет ключа, определенный Определите ключ для этого EntityType.»EntityType «Attribute» не имеет ключа, хотя определен [ключ]

public partial class T_Attribute 
{ 
    public T_Attribute() 
    { 
     this.T_Characteristic = new HashSet<T_Characteristic>(); 
     this.T_Category = new HashSet<T_Category>(); 
    } 

    [Key] 
    public int AttributeId { get; set; } 

    public string Descr { get; set; } 
    public Nullable<bool> HasCharacteristics { get; set; } 

    public virtual ICollection<T_Characteristic> T_Characteristic { get; set; } 
    public virtual ICollection<T_Category> T_Category { get; set; } 
} 

Моя точная Ошибка. В моих других сущностных классах это было разрешено путем добавления [Key] -параметра

Переменные имеют те же имена, что и в базе данных.

Спасибо в adavance за вашу помощь.

Трассировка стека:

[ModelValidationException: Один или несколько ошибок проверки были обнаружены в процессе генерации модели:

\ tSystem.Data.Entity.Edm.EdmEntityType:: EntityType 'Атрибут' имеет ключ не определен. Определите ключ для этого EntityType. \ tSystem.Data.Entity.Edm.EdmEntityType: Имя: указанное имя: не разрешено: '__DynamicallyInvokableAttribute'. \ tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'T_Attribute1' основан на типе 'Атрибут', который не имеет определенных ключей. ]
System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl (EdmModel модель, XmlWriter писатель) +114
System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateCsdl (EdmModel модель) +77
System.Data.Entity.DbModelBuilder.Build (DbProviderManifest providerManifest, DbProviderInfo providerInfo) +218
System.Data.Entity.DbModelBuilder.Build (DbConnection providerConnection) +107
System.Data.Entity.Internal.LazyInternalContext. CreateModel (LazyInternalContext internalConte х) +143
System.Data.Entity.Internal.RetryLazy 2.GetValue(TInput input) +171
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +498 System.Data.Entity.Internal.InternalContext.Initialize() +31 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +39
System.Data.Entity.Internal.Linq.InternalSet
1.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext() +38 System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider() + 84 System.Linq.Queryable.Select (IQueryable 1 source, Expression 1 селектор) +66
HP.GPS.ClearingCenter.Application.Products.CategoryDataService.GetAllCategories() в FilepathToSolution .Application \ Продукты \ CategoryDataService.cs: 22 HP .GPS.ClearingCenter.Web.ViewModels.Home.IndexViewModel.Initialize() в FilepathToSolution .Web \ ViewModels \ Home \ Index ViewModel.cs: 27
Solution .Web.Controllers.HomeController.Search() в FilepathToSolution .Web \ Контроллеры \ HomeController.cs: 22 lambda_method (Закрытие, ControllerBase, Object []) +101
системы. Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase контроллер, объект [] параметры) +59
System.Web.Mvc.ReflectedActionDescriptor.Execute (controllerContext controllerContext, IDictionary параметры) + 60
System.Web.Mvc ,Async.AsyncControllerActionInvoker.InvokeSynchronousActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +50
System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +75 System.Web.Mvc.Async.<>c__DisplayClass8
1.b__7 (IAsyncResult _) +44 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +139 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +126 System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +323 System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +44 System.Web.Mvc.Async.WrappedAsyncResult
1.End() +139 System.Web.Mvc.Async .AsyncResultWrapper.End (IAsyncResult AsyncResult, метка объекта) +102
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters (IAsyncResult AsyncResult) + 50
System.Web.Mvc.Async. <> c__DisplayClass2a.b__20() +68 System.Web.Mvc.Async. <> c__DisplayClass25.b__22 (IAsyncResult asyncResult) +184 System.Web.Mvc.As ync.WrappedAsyncResult 1.End() +136 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +40
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47 System.Web.Mvc.Async.WrappedAsyncResult
1.End() +151
System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult AsyncResult, Объект Тег) +59
System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult AsyncResult , Object tag) +40
System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +44 System.Web.Mvc.Async. <> c__DisplayClass4.b__3 (IAsyncResult ар) +47 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +151
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +45
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47 System.Web.Mvc.Async.WrappedAsyncResult
1.End() +151
System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult AsyncResult, Объект тегов) +59
System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult AsyncResult, тег объекта) + 40
System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult AsyncResult) + 40 System.Web.Mvc.MvcHandler .System.Web.IHttpAsyncHandler.EndProcessRequest (результат IAsyncResult ) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9651188 System.Web.HttpApplication.ExecuteStep (IExecutionStep шаг, Boolean & completedSynchronously) +155

+0

Попробуйте дать ему имя, подобное AttId –

+0

Это тоже не помогло. Даже называть его T_AttributeId (так что tablename + Id как где-то упоминать) не помогло. Спасибо, хотя – Asator

+0

Не могли бы вы разместить ссылки на файл cs –

ответ

0

Удаление базы данных и перехода к Code-First решить эту проблему для меня. Спасибо за вашу помощь.

Смежные вопросы