LINQ к SQL - Ошибка компиляции при расширении контекста данных с помощью частичного класса и методов

Это потому, что созданный элемент не является частью документа. Вы можете добавить созданный элемент в тело , прежде чем получить к нему доступ следующим образом:

document.body.appendChild(div_baumpatenschaft);

//create div for form element "Baumpatenschaft"
var div_baumpatenschaft = document.createElement('div');

//create ID for div
div_baumpatenschaft.id = "div_baumpatenschaft";

document.body.appendChild(div_baumpatenschaft);

var pt = document.getElementById("div_baumpatenschaft");    

//HTML code for creating radio buttons stored in var baumpatenschaft
var baumpatenschaft = 
      '<label for="radio_ja">ja</label><br/>\
      <input checked="checked" type="radio" name="baumpatenschaft" id="radio_ja" value="ja"/>\
      <label for="radio_nein">nein</label><br/>\
      <input type="radio" name="baumpatenschaft" id="radio_nein" value="nein"/>';


//adding the HTML-code to div_baumpatenschaft
pt.innerHTML = baumpatenschaft;

Обновление:

//create div for form element "Baumpatenschaft"
var div_baumpatenschaft = document.createElement('div');

//add div_baumpatenschaft to DOM (child of <div> with id="formular")
var formular = document.getElementById('formular');
formular.appendChild(div_baumpatenschaft);

//create ID for div
div_baumpatenschaft.id = "div_baumpatenschaft";

var pt = document.getElementById("div_baumpatenschaft");    

//HTML code for creating radio buttons stored in var baumpatenschaft
var baumpatenschaft = 
      '<label for="radio_ja">ja</label><br/>\
      <input checked="checked" type="radio" name="baumpatenschaft" id="radio_ja" value="ja"/>\
      <label for="radio_nein">nein</label><br/>\
      <input type="radio" name="baumpatenschaft" id="radio_nein" value="nein"/>';


//adding the HTML-code to div_baumpatenschaft
pt.innerHTML = baumpatenschaft;
<div id="formular"></div>

7
задан Ronnie Overby 4 March 2009 в 18:13
поделиться

6 ответов

Ваши два частичных класса определяются в различных пространствах имен, таким образом, компилятор не 'совместно использует' их.

Существует установка под Свойствами в разработчике DBML для этого. Возможно, это сбросило?

13
ответ дан 6 December 2019 в 10:54
поделиться

Для проверки полей в Linq необходимо реализовать метод OnValidate не методы Вставки и Обновления.

Например:

partial void OnValidate(System.Data.Linq.ChangeAction action)
    {
        //All content items need titles
        if (Description == null || Description == "")
            throw new Exception("The description field is empty!");

        //Content types of image need...images
        if (ContentItemTypeId == (int)ContentItemTypes.Image && ImageData == null)
            throw new Exception("An image is required in order to save this content item!");

        //New Content Items don't have ids.  If a new one comes through, set the default values for it.
        if (this.ContentItemId == 0)
        {
            this.CreatedOn = DateTime.Now;
            this.LastUpdatedOn = DateTime.Now;
            this.IsDeletable = true;
        }
    }
4
ответ дан 6 December 2019 в 10:54
поделиться

Та ошибка означает, что частичный метод Ваш реализует, не был определен в классе LawEnforcementDataContext.

Эти методы должны быть автоматически определены, когда Вы добавляете таблицы в свой DataContext, посмотрите в сгенерированном источнике (вероятно, LawEnforcement.designer.cs) для региона в классе LawEnforcementDataContext маркировал #region Определения Метода Расширяемости, все частичные методы будут определены здесь. Я ожидаю, что методы будут отсутствовать, попытаться удалить и повторно добавить таблицу Course в Вашей модели Linq для генерации их.

0
ответ дан 6 December 2019 в 10:54
поделиться

Удалите partial ключевое слово из Ваших методов - сгенерированный класс не имеет никаких частичных методов.

Править: Частичные методы только работают, когда они определяются как это:

partial class Foo
{
    partial void foo();
}

partial class Foo
{
    partial void foo() { }
}

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

Править: Вот, что-то для проверки - является этим возможный что параметр Course разве тот же самый тип в одном из этих двух объявлений не? Другими словами, это возможный, что что-то вроде этого произошло:

partial class Foo
{
    partial void foo(Biz.Parameter p);
}

partial class Foo
{
    partial void foo(Baz.Parameter p) { }
}

namespace Baz
{
    class Parameter { }
}

namespace Biz
{
    class Parameter { }
}
1
ответ дан 6 December 2019 в 10:54
поделиться

Для разъяснения это - класс, это неравнодушно, не методы в нем - класс DataContext, сгенерированный L2S, является частичным классом, но не содержит частичных методов ** исправление ниже **.

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

Править

Хорошо я никогда - я не был бы, видеть/использовать, "#region методы" Определений Метода Расширяемости, прежде чем... Вы изучаете что-то каждый день! Так или иначе статья, с которой я связался, является полезным обсуждением частичных методов в целом, отдельный от L2S.

0
ответ дан 6 December 2019 в 10:54
поделиться

Ронни, Я только что столкнулся с этой же проблемой. Предостережение: будьте осторожны, когда у вас есть несколько классов в одном файле сущности.

Проверьте, где находится частичный класс: Не поместили ли вы случайно определение внутри контекстных скобок данных, как это сделал я?

.
0
ответ дан 6 December 2019 в 10:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: