私がしていることの簡単な説明。私は、ASP MVC 3とEFコードファーストアプローチを使用して、かなり原油資産トラッキングデータベースを作成しています。私は新しい資産を作ることができます。私は資産の詳細を見ることができます。編集ビューを表示してAssetTagを編集することもできます。ただし、レコードでは他のフィールドは更新されません。たとえば、LocationNameを編集するとします。投稿されているように動作し、インデックスビューに戻りますが、実際には変更が実際には記録されません。EF 4.1コードでASP.NET MVC 3を使用すると、メインテーブルのみを編集できますが、何が間違っていますか?
私が作成している私は、上記AssetModelを使用しています。このDbDataSetいる
public class AssetModel
{
public int id { get; set; }
public string AssetTag { get; set; }
public virtual Location Location { get; set; }
public virtual Hardware Hardware { get; set; }
public virtual Software Software { get; set; }
public virtual User User { get; set; }
}
public class Location
{
public int LocationId { get; set; }
public string LocationName { get; set; }
}
public class Hardware
{
public int HardwareId { get; set; }
public string Manufacturer { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
public class Software
{
public int SoftwareId { get; set; }
public string PublisherName { get; set; }
public string SoftwarePackageName { get; set; }
public string SoftwarePackageVersion { get; set; }
public string SerialNumber { get; set; }
public bool IsVolumeLicense { get; set; } // as in "Yes this is a Vol. Lic. Agreement"
public LicenseAgreement LicenseAgreement { get; set; }
}
public class LicenseAgreement
{
public int LicId { get; set; }
public string VolumeLicenseAgreementCompany { get; set; }
public string AgreementIdentifier { get; set; }
public DateTime VolumeLicenseStartDate { get; set; }
public DateTime VolumeLicenseExpirationDate { get; set; }
public Int16 NumberOfLicenses { get; set; }
}
public class User
{
// may remove this at some time and pull from Active Directory.
// for now we take the easy route.
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
以下のモデル:
public ActionResult Edit(int id)
{
AssetModel assetmodel = db.Assets.Find(id);
return View(assetmodel);
}
//
// POST: /Asset/Edit/5
[HttpPost]
public ActionResult Edit(AssetModel assetmodel)
{
if (ModelState.IsValid)
{
db.Entry(assetmodel).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(assetmodel);
}
:私は編集のためにこれを私のAssetControllerで
public class AssetContext : DbContext
{
public DbSet<AssetModel> Assets { get; set; }
}
を持っていますここにEdit.cshtml
があります@model ISHelpDesk.Models.AssetModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm("Edit", "Asset")) {
@Html.ValidationSummary(true)
<fieldset>
<legend>AssetModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.AssetTag)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.AssetTag)
@Html.ValidationMessageFor(model => model.AssetTag)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Location.LocationName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Location.LocationName)
@Html.ValidationMessageFor(model => model.Location.LocationName)
</div>
</fieldset>
<p><input type="submit" value="Save"</p>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
もちろん、これはあなたが持続し、私はちょうどあなたには、いくつかの変更を取得することができるかどうかを確認しようとしていたい行動ではないかもしれない
にそれを変えることで行くと、そこから行く私はまた私がいることを言及するのを忘れてしまいましたSQL Server CEも使用します。 – Norm