Как создать ссылку на существующую запись - PullRequest
1 голос
/ 15 декабря 2008

Полегче на меня, это мой первый вопрос:)

Я работаю с linqToSql около месяца, и меня беспокоит только одна вещь ...

Допустим, у меня есть объект Entity с именем «Customer», а другой - с именем «CustomerType», Customer в качестве ссылки на CustomerType.

При вставке Customer мне нужно установить CustumerType, у меня есть значение customerTypeID, которое я хочу установить, поэтому я делаю следующее:

if(c.CustomerTypeReference == null)
{
   c.CustomerTypeReference = new System.Data.Objects.DataClasses.EntityReference<CustomerType>
}


c.CustomerTypeReference.EntityKey = new System.Data.EntityKey("DataContext.CustomerType", "id", value);

Это работает, но мне кажется слишком сложным. Есть ли другой способ сделать это?

Имейте в виду, что я не хочу получать объект CustomerType из базы данных, этот пример прост, но я работаю с объектами, которые содержат около 100 свойств.

1 Ответ

1 голос
/ 15 декабря 2008

Используете ли вы DBML Designer или вы вручную кодировали классы сущностей? Если вы работаете с Дизайнером, я ожидаю, что, поскольку в вашей таблице есть столбец customerTypeID, в вашем классе Customer будет свойство с именем customerTypeID. Все, что вам действительно нужно сделать, это установить значение этого свойства в значение id

  Customer c = new Customer();
  c.customerTypeID = value;

Это должно работать нормально, если вы не хотите ссылаться на сами связанные сущности (то есть вы просто собираетесь сохранить этот конкретный объект, а не использовать его сразу). Если вам нужно обратиться к связанным сущностям, скажем, для доступа к их свойствам, вам придется получить значения из базы данных. Мне нужно взглянуть на сгенерированный дизайнером код, но я думаю, что установщики свойств в столбцах id-значения не обновляют ссылки на сущности, в то время как установщики ссылок на сущности обновляют поля id-значения.

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