Entity Framework отсутствует частично - PullRequest
2 голосов
/ 11 ноября 2011

Я изучаю Entity Framework и решил создать простое консольное приложение, которое использует Entity Framework с двумя таблицами.

Я создал две таблицы: http://wstaw.org/w/LrL/

У меня есть подходящие классы для базы данных.

Это код.

Класс контакта.

public class Contact
{
     public int ContactID { get; set; }
     public string FirstName { get; set; }
     public string LastName { get; set; }
     public ICollection<Address> Addresses { get; set; }
}

И класс адреса.

public class Address
{
     public int AddressID { get; set; }
     public string Street { get; set; }
     public string City { get; set; }
}

Visual Studio показывает следующие ошибки.

Ошибка 3 Отсутствует частичный модификатор при объявлении типа 'MyEntityPOCO.Contact';существует другое частичное объявление этого типа Contact.c 8 19 MyEntityPOCO

Ошибка 4 Отсутствует частичный модификатор при объявлении типа 'MyEntityPOCO.Address';существует другое частичное объявление этого типа Address.cs 8 19 MyEntityPOCO

Ошибка 1 Выполнение преобразования: перезапишите маркер замены '$ edmxInputFile $' фактическим именем файла .edmx, из которого вы хотите сгенерировать.MyEntityPOCO \ Model1.tt 1 1

Как можно устранить эти ошибки?

Ответы [ 3 ]

4 голосов
/ 11 ноября 2011

Частичное ключевое слово используется для объявления класса в более чем одном кодовом файле. Это объясняется здесь: http://msdn.microsoft.com/en-us/library/wa80x488.aspx

В вашем случае произошло то, что у вас есть класс, украшенный частичным ключевым словом (класс, созданный в файле yourmodel .edmx.cs EF), и другой класс с тем же именем в то же пространство имен.

Обычно с двумя классами с одинаковыми именами в одном и том же пространстве имен (без частичного ключевого слова) вы получите исключение конфликта имен классов. В этом случае, поскольку один из двух классов помечен как частичный, компилятор C # генерирует ошибку, которую вы видите.

Предлагаемое решение: найдите в своем коде другой класс, определите, как он туда попал, и либо переименуйте его, либо переместите в другое пространство имен, либо пометьте его как частичное, если предполагается, что это тот же класс.

0 голосов
/ 11 ноября 2011

Когда вы создаете Entity в Entity Framework, EF автоматически создаст для вас классы и пометит их как ЧАСТИЧНЫЕ классы.Следовательно, вы можете использовать их немедленно «из коробки».

Вот почему говорится, что вам нужно создавать их как частичные классы ... у него уже есть класс с именем 'Address', который помечен как частичный,поэтому он думает, что этот новый должен быть другой «частью» этого класса, но вы просто забыли пометить его таким образом.

Если вы хотите расширить возможности этого класса и добавить функции внутри этого класса, вы можете сделать что-то вроде:

public partial class Address {...}

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

0 голосов
/ 11 ноября 2011

Похоже, что вы используете Database First Entity Framework, поэтому вы создали базу данных и сделали перетаскивание для перемещения объектов в edmx.

Похоже, вы могли вручную создавать классы для контактов и адресов. Это тот случай? Вам не нужно этого делать, потому что Entity Framework сгенерирует классы для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...