這裏的數據是我的問題:ASP.NET MVC 4如何編輯來自外鍵
我有一個包含一些屬性,如姓名等數據庫,但我也有2個細節attributs,他們是IISSettings和SQLSettings。
public class Environment
{
public int ID { get; set; }
public string Name { get; set; }
public virtual SQLSettings SQL { get; set; }
public virtual IISSettings IIS { get; set; }
...
}
IISSettings和SQLSettings包含外鍵的名稱和ID。
當我嘗試更新環境,並且我只更改IISSettings或SQLSettings中的屬性時,Visual Studio告訴我沒有任何更改,可能是因爲在「標準」屬性中沒有任何更改。唯一改變的是IISSettings或SQLSettings中的值。 所以,我想知道如何將更改保存到我的數據庫,當我只想更新IISSettings或SQLSettings?
我的視圖模型:
public class EnvironmentViewModel : ViewModelBase
{
public Environment Environment { get; set; }
public IISSettings IISSettings { get; set; }
public SQLSettings SQLSettings { get; set; }
//create/details/delete functions etc.
internal void Edit()
{
try
{
db.Entry(Environment).State = EntityState.Modified;
db.SaveChanges();
}
catch (DbUpdateConcurrencyException ex)
{
Debug.WriteLine("\nDbUpdateConcurrencyException : " + ex);
}
}
...
}
ViewModelBase是我的分貝設置。標準DbSet:
public class ViewModelBase
{
protected MyDBContext db = new MyDBContext();
}
和
public class MyDBContext : DbContext
{
public MyDBContext()
: base()
{
}
public DbSet<Environment> Environments { get; set; }
}
工作代碼:
<div class="editor-label">
@Html.LabelFor(model => model.Environment.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Environment.Name)
@Html.ValidationMessageFor(model => model.Environment.Name)
</div>
不工作代碼:
<div class="editor-label">
@Html.LabelFor(model => model.Environment.IIS.IISServer)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Environment.IIS.IISServer)
@Html.ValidationMessageFor(model => model.Environment.IIS.IISServer)
</div>
這是當我試圖將更改保存到我的數據庫而我只是改變了一個名字SQLSettings,我得到一個錯誤。 DbUpdateConcurrencyException。
有什麼建議嗎? (如果我忘記了請告訴我):)
也許'DbUpdateConcurrencyException'及其屬性的內容可以派上用場,在解決這一問題。 – CodeCaster