Платформа объекта - Модель Обновления От Базы данных … - никакое обновление происходит!

У меня есть таблица в моем названном DB CompanyDetails. Этому назвали столбец CharacterID varchar(255). Я просто изменил его от a NOT NULL столбец к a NULL столбец. Я выполнил команду 'Update Model From Database...' в образцовом браузере, а также в средстве просмотра файла EDMX. Это - то, что это создало в разработчике:

/// <summary>
/// There are no comments for Property CharacterId in the schema.
/// </summary>
[global::System.Data.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable=false)]
[global::System.Runtime.Serialization.DataMemberAttribute()]
public string CharacterId
{
    get
    {
        return this._CharacterId;
    }
    set
    {
        this.OnCharacterIdChanging(value);
        this.ReportPropertyChanging("CharacterId");
        this._CharacterId = global::System.Data.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("CharacterId");
        this.OnCharacterIdChanged();
    }
}
private string _CharacterId;
partial void OnCharacterIdChanging(string value);
partial void OnCharacterIdChanged();
/// <summary>
/// There are no comments for Property URLDomain in the schema.
/// </summary>
[global::System.Data.Objects.DataClasses.EdmScalarPropertyAttribute()]
[global::System.Runtime.Serialization.DataMemberAttribute()]
public string URLDomain
{
    get
    {
        return this._URLDomain;
    }
    set
    {
        this.OnURLDomainChanging(value);
        this.ReportPropertyChanging("URLDomain");
        this._URLDomain = global::System.Data.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("URLDomain");
        this.OnURLDomainChanged();
    }
}
private string _URLDomain;
partial void OnURLDomainChanging(string value);
partial void OnURLDomainChanged();

Вы заметите, что это имеет атрибут:

[global::System.Data.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable=false)]

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

[global::System.Data.Objects.DataClasses.EdmScalarPropertyAttribute()]

Что дает? Как я могу внести простые изменения в своей схеме DB и действительно заставить Платформу Объекта Обновлять на основе тех изменений?! Я должен был отбросить и воссоздать модель каждый и каждый раз было изменение!

14
задан Keith Barrows 2 February 2010 в 23:44
поделиться

1 ответ

Структура объекта использует XML-файл (edmx) для определения схемы базы данных и отображения. Когда вы нажимаете «обновить модель из базы данных», обновляется именно этот файл edmx.

Затем, когда вы компилируете свое приложение, этот файл edmx анализируется и генерируются классы поддержки, на которые вы смотрите, поэтому, если вы хотите увидеть изменение, отраженное в классах поддержки, вам необходимо обновить модель, а затем перекомпилировать .

Наконец, вы также должны помнить, что edmx содержит 3 вещи.

  1. Схема базы данных / хранилища (SSDL)
  2. Концептуальная модель (CSDL)
  3. Сопоставление концептуальной модели и хранилища (MSL)

Обновление базы данных и нажатие кнопки «обновить» обновит SSDL, но победило. t обязательно автоматически вносить необходимые изменения в концептуальную модель, вам может потребоваться открыть редактор edmx и проверить свойства в поле. (Вполне возможно, чтобы поле базы данных, допускающее значение NULL, было сопоставлено с концептуальным полем, не допускающим значения NULL, но, очевидно, в этом случае это не то, что вам нужно).

18
ответ дан 1 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

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