2015-04-18 6 views
0

Я пытаюсь определить переменную модель ID, как это в ASP.NET 5:ASP.NET vNext DataAnnotations DatabaseGenerated не работает

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public int Id { get; set; } 

Для поддержки аннотаций данных я добавил пакет System.ComponentModel.DataAnnotations в моем проекте. JSON-файл, как это:

"System.ComponentModel.Annotations": "4.0.10-beta-22811" 

А в модели CS-файла я добавил using System.ComponentModel.DataAnnotations.Schema;

Хотя я получаю следующее сообщение об ошибке:

Error CS0433 The type 'DatabaseGeneratedAttribute' exists in both 'System.ComponentModel.Annotations, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

И я не знаю, как я должен это исправить. Я попытался включить пространство имен System.ComponentModel.Annotations вместо System.ComponentModel.DataAnnotations, но кажется, что он не существует, как я получаю эту ошибку, то:

Error CS0234 The type or namespace name 'Annotations' does not exist in the namespace 'System.ComponentModel' (are you missing an assembly reference?)

И если это пространство имен не существует, я не понимаю, как я могу получить предыдущую ошибку, которая говорит мне, что DatabaseGeneratedAttribute существует в двух местах.

Я бы очень признателен за всю помощь, которую я могу получить от этого.

+0

Прежде всего, ASP.NET не знает, что такое база данных. Таким образом, вы не используете ASP.NET, также MVC. Они агностики базы данных. Это означает, что вы используете технологию доступа к данным, такую ​​как Entity Framework, которая не имеет ничего общего с ASP.NET и не имеет отношения к ней, кроме того, что вы можете использовать Entity Framework в приложении ASP.NET. Учитывая, что вы используете инфраструктуру Entity, следующий вопрос: какая версия? EF6 или EF7? И какую версию ASP.NET 5 вы используете? Было выпущено 6 выпусков CTP. –

ответ

1

Вы можете использовать KeyAttribute. Это должно сделать автогенерацию для вас.

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

Этот атрибут в пространстве имен System.ComponentModel.DataAnnotations

Однако, если вы хотите продолжать использовать DatabaseGeneratedAttribute. Ошибка довольно понятна. Это говорит о том, что он доступен в обоих пространствах имен

System.ComponentModel.DataAnnotations  
System.ComponentModel.DataAnnotations.Schema 

Вам нужно будет указать в явной форме имен вы должны использовать Э.Г.

[System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)] 

Вы всегда можете использовать псевдоним , чтобы сохранить пространство имен коротким и сладким.

1

Убедитесь, что ваш проект не имеет ссылки на обе версии сборки System.ComponentModel.DataAnnotations.dll.

Старая версия (4.0.0.0) может быть включена в ваш проект по умолчанию и не удаляется после установки пакета с новой версией (4.0.10.0).

+0

Спасибо. Хотя это работает, но я все еще думаю, что у меня есть две версии. Я собираюсь проверить это. – jimutt

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