Entity Framework Mapping Oddity - имена членов не могут совпадать с их типом включения - PullRequest
4 голосов
/ 16 марта 2009

Я создал Entity Model из БД, и получаю сообщение об ошибке «Имена элементов не могут совпадать с их типом включения». Это означает, что есть свойство с тем же именем, что и класс.

Итак, ошибка здесь

    /// <summary>
    /// There are no comments for Employee in the schema.
    /// </summary>
    [global::System.ComponentModel.BrowsableAttribute(false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Data.Objects.DataClasses.EntityReference<Employee> EmployeeReference
    {
        get
        {
            return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Employee>("HumanResourceModel.FK_EmployeeReferenceMapping_Employee", "Employee");
        }
        set
        {
            if ((value != null))
            {
                ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<Employee>("HumanResourceModel.FK_EmployeeReferenceMapping_Employee", "Employee", value);
            }
        }
    }

который является частью

   [global::System.Data.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName="HumanResourceModel", Name="EmployeeReference")]
[global::System.Runtime.Serialization.DataContractAttribute(IsReference=true)]
[global::System.Serializable()]
public partial class EmployeeReference : global::System.Data.Objects.DataClasses.EntityObject
{

Я могу «исправить» эту ошибку, переименовав имя свойства (но это вызовет множество проблем в будущем), но как это исправить из созданного кода? Я переименовал Foreign Key в Mapping, но это не сработало.

Есть идеи?

Приветствия Сарки.

Ответы [ 2 ]

4 голосов
/ 23 марта 2009

разобрался

Entity Framework: загрузка множества в один объект

Потому что он добавляет ссылку на многие к одному

Employee.Load () EmployeeReference.Load ()

и так как у меня есть таблица EmployeeReference, она умерла на своей заднице!

Исправить = переименовать employeeReferenceTable

3 голосов
/ 17 марта 2009

Таким образом, рассматриваемый класс ...

public class Employee
{
    public object Employee { get; set; }
}

Я понимаю, что это модель структуры сущностей, и вы не указываете ее в коде, но это по сути то, что вы создали, верно?

Если это так, я не вижу другого способа, кроме переименования свойства или объекта, из-за того, как работает EF. Возможно, это не самая дружелюбная система в мире, но правила необходимы для того, чтобы кодировался EF.

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

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