Имя свойства повторяется, но с другим типом данных - PullRequest
0 голосов
/ 15 января 2010

У меня есть таблица Invoices с колонкой Vendor. Столбец Vendor - это ссылка FK на таблицу Vendors с идентификатором PK.

Мой dbml создает соответствующие объекты ... Invoice и Vendor. Однако мой объект Invoice имеет как свойство Vendor (как String), так и свойство Vendor1 (как объект Vendor).

Я думал, что это будет связано с тем, что имя моего столбца совпадает с именем объекта, на который есть ссылка, но после изменения столбца на VendorId и воссоздания всех объектов dbml повторяющееся свойство все еще здесь. столбца, соответствующего объекту ... он создает Vendor для хранения значения String, а затем Vendor1 для ссылки на объект Vendor. Почему он не просто создает ссылку на один объект?

Спасибо

1 Ответ

1 голос
/ 15 января 2010

Это не повторяющееся свойство - это два разных свойства для двух разных целей.

Свойство Vendor соответствует данным в столбце вашей базы данных.

Свойство Vendor1 представляет отношение внешнего ключа, то есть соединение с другой таблицей. Он называется Vendor1, потому что имя Vendor уже занято (хорошая идея - использовать VendorId для имени столбца). Объект Vendor1 не будет выбран по умолчанию, если вы его не используете. Наличие этого свойства облегчает формулировку запросов, которые в противном случае потребовали бы, чтобы вы указали соединение.

Оба свойства полезно иметь на вашем объекте.


Чтобы ответить на ваш обновленный вопрос:

Linq в любом случае должен получить идентификатор поставщика, используете ли вы его или нет - на всякий случай, если вы можете его использовать. Поскольку он уже получен, кажется удобным, что он также виден в интерфейсе. Если вместо obj.VendorId вы написали obj.Vendor1.Id, это приведет к ненужному извлечению объекта Vendor1 из базы данных. Так что это также влияет на производительность.

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