gpt4 book ai didi

.net - Entity Framework - 从数据库更新模型... - 没有更新发生!

转载 作者:行者123 更新时间:2023-12-03 22:15:10 25 4
gpt4 key购买 nike

我的数据库中有一张表,名为 CompanyDetails .它有一列名为 CharacterID varchar(255) .我刚刚从 NOT NULL 改变了它列到 NULL柱子。我在模型浏览器和 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()]

是什么赋予了?如何在我的数据库架构中进行简单的更改并真正根据这些更改更新 Entity Framework ?!每次发生变化时,我都不得不放弃并重新创建模型!

最佳答案

Entity Framework 使用 XML 文件(edmx)来指定数据库方案和映射。当您单击“从数据库更新模型”时,更新的是这个 edmx 文件。

接下来,当您编译您的应用程序时,会解析这个 edmx 文件并生成您正在查看的支持类,因此如果您想查看支持类中反射(reflect)的更改,您需要更新模型,然后重新编译。

最后,您还必须记住 edmx 包含 3 项内容。

  • 数据库/存储方案 (SSDL)
  • 概念模型 (CSDL)
  • 概念和存储之间的映射 (MSL)

  • 更新数据库并单击“更新”将更新 SSDL,但不一定会自动对概念模型进行所需的更改,您可能需要打开 edmx 设计器并检查字段上的属性。 (完全有可能将可为空的数据库字段映射到不可为空的概念字段,但显然在这种情况下这不是您想要的)。

    关于.net - Entity Framework - 从数据库更新模型... - 没有更新发生!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188623/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com