我在我的數據庫中有一個名爲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()]
什麼給?我如何在我的數據庫模式中進行簡單的更改,並根據這些更改真正讓實體框架更新?!我不得不每次都改變模型並重新創建模型!
+1。這是對的。如果您已經在CSDL中生成了一個屬性,則必須手動更新它。但SSDL將始終從頭開始重新生成。 EF假設你想要你的CSDL定製。 – 2010-02-03 01:58:33
謝謝克雷格。作爲一個額外的說明,我相信你可以在開關/模式下使用edmgen工具(http://msdn.microsoft.com/en-us/library/bb387165.aspx):FromSSDLGeneration或者/ mode:FullGeneration來強制生成CSDL + MSL或所有塊,如果這是您需要的。 – 2010-02-03 10:29:41
我在哪裏可以找到這3個文件,並且每次進行這樣的更改時是否必須手動編輯它們?我在硬盤上搜索過,根本找不到這些文件,所以想知道它們是否是內部生成的,如果是,我該如何打開它們? (什麼是newb問題!):) – 2010-02-03 16:04:56