Как вставить в linq для sql - PullRequest
3 голосов
/ 19 октября 2011

У меня проблема с двумя таблицами во время вставки. Таблицы были созданы следующим образом:

У меня есть таблица «Страница», которая связана с другой таблицей «Содержимое», так что «Страница» FK попадает в «Содержимое»

К тому времени, когда я вставляю новое содержимое, в таблице «Страница» уже есть индекс, который я хочу поместить в «Содержимое», чтобы понять, почему при сканировании таблицы выбирается «Страница» в правильной строке. Проблема в том, что пришло время взять InsertOnSubmit контент. он также автоматически создает новый индекс на странице.

У кого-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Поскольку объект Page имеет отношение один ко многим с объектом Content, следовательно, каждая страница имеет много содержимого, и каждый контент попадает только на одну страницу, поэтому объект страницы должен иметь список содержимого иСущность Content должна иметь свойство типа Page, представляющее ссылку на страницу вместо внешнего ключа PageId, поэтому вам не нужно было извлекать идентификатор страницы для добавления нового контента, как показано ниже:

[Table]
public class Page
{
    ...
    private EntitySet<Content> _contents;
    [Association(Storage = "_contents", ThisKey = "Id", OtherKey = "PageId")]
    public EntitySet<Content> Contents
    {
        get { return _contents; }
        set { _contents.Assign(value); }
    }
    ...
}

Для сущности Контента:

[Table]
public class Content
{
    ...
    [Column]
    int PageId{ get; set; }
    EntityRef<Page> _page;
    [Association(Storage = "_page", ThisKey = "PageId", 
      OtherKey = "Id", IsForeignKey = true)]
    public Page Page
    {
        get { return _page.Entity; }
        set { _page.Entity = value; }
    }
 }

Всякий раз, когда вам нужно инертировать новый Контент, вы должны передать ссылку на страницу, например:

 Page pageReference = //Get By its id or whatever
 //or
 Page pageReference = new Page { Id = 1, name = " ",....}; 
 Repository.Add( new Content{ Id = 1,...,Page = pageReference });

Обратите внимание: метод add просто делает InserOnSubmit для объекта.

Таким образом, всякий раз, когда вы хотите вставить новый контент, вы можете прикрепить любую страницу или добавить любую новую страницу только из сущности страницы, а не из Контента, и вам не нужно было извлекать идентификатор страницы вЧтобы сказать им, что это за страница с таким содержанием, просто определите отношение как отношения объектов, а не как внешние ключи.

0 голосов
/ 19 октября 2011

Да, вам нужно объяснить этот абит лучше, но если я вас правильно понимаю, вы создаете контент, который идет внутри страницы. Ключевым моментом здесь является создание страницы, получение ее идентификатора и добавление содержимого на эту страницу.

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