Dbml добавляет 1 к имени набора объектов

#c# #.net #linq #linq-to-sql #entityset

#c# #.net #linq #linq-to-sql #набор объектов

Вопрос:

Привет, я получил файл dbml, который начинает добавлять 1 в конец имени набора объектов, есть ли какой-либо способ навсегда исправить это? Если я изменю его в файле конструктора, он просто вернется при обновлении файла.

 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Product_CompositeProduct", Storage="_CompositeProducts1", ThisKey="ProductNo", OtherKey="ParentID")]
        public EntitySet<CompositeProduct> CompositeProducts1
        {
            get
            {
                return this._CompositeProducts1;
            }
            set
            {
                this._CompositeProducts1.Assign(value);
            }
        }
  

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

Комментарии:

1. У вас есть несколько внешних ключей к одной таблице?

2. Он получил 1 основной и 1 внешний ключ

Ответ №1:

Похоже, у вас уже есть свойство с именем CompositeProducts , и именно поэтому оно добавляет 1 в конец набора объектов. в следующий раз он добавит 2.

Комментарии:

1. Где я могу это проверить? когда я открываю файл Db.dbml, визуально я могу найти только 1 экземпляр CompositeProduct, возможно, ошибка в файле Db.dbml.layout?

2. Это заработало, открыв Db.dbml в редакторе xml и переименовав его. Также можно подтвердить, что существует только 1 экземпляр. Хотя сейчас это работает, я думаю, это только вопрос времени, прежде чем это произойдет снова. Так что постоянное исправление было бы неплохо.

3. Возможно ли, что вы сейчас подключаетесь к другой базе данных. Например, вы сгенерировали dbml на основе db на sqlserver1 , а затем подключаетесь к DB на sqlsever2.

4. J.W В какой-то момент он был подключен к другому sqlserver для решения проблемы со скоростью, может быть причиной. Но на данный момент это выглядит так, как будто это исправлено с помощью редактирования xml DB-dbml