LINQ to SQL - PullRequest
       8

LINQ to SQL

3 голосов
/ 14 декабря 2008

При попытке использовать LINQ to SQL я столкнулся с несколькими проблемами.

У меня есть люди в таблице:

  • int ID
  • string firstName
  • string lastName

И таблица примечаний, которая имеет:

  • int ID
  • string noteText
  • строка созданаBy
  • datetime creationDate
  • int PersonID

PersonID - это внешний ключ и отношение 1: n

Я пытался использовать LINQ to SQL, чтобы создать человека и несколько заметок для каждого человека.

Person person =  new person();
Person.firstName = "me";
Person.note = new note();   
Person.note.noteText = "some text…"; 

_DataContext.Persons.InsertOnSubmit(person);   
_DataContext.SubmitChanges();

Проблема в том, что объект person еще не существует в БД, поэтому у него еще нет идентификатора. Таким образом, поле note.personID имеет значение 0 ... (поле идентификатора является полем идентификации на сервере sql)

Единственное решение, которое я нашел, - это создать человека, отправить изменения, а затем снова создать заметку и отправить изменения.

Я что-то здесь упускаю или, может быть, именно так нужно работать с LINQ to SQL?

Как я могу добавить несколько заметок на человека с помощью LTS? У меня отношения 1: n, и я не вижу их с LTS.

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

1 Ответ

3 голосов
/ 14 декабря 2008

Если вы не используете конструктор классов LinqToSql, вам следует подумать об этом. Сгенерированные им классы будут поддерживать описанный вами сценарий вставки.

Я могу сказать, что вы не используете конструктор, потому что он даст вам свойство Notes (множественное число) для Person ... поскольку Person - это 1 ко многим с Notes.

Как настроить LTS для загрузки заметок по требованию?

Конструктор сгенерирует свойство типа EntitySet (Note), которое будет загружать Notes по требованию.

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