I simply have a project that uses Linq to SQL to present model data to a View form for editing. My problem is the primary key for that database table is the date + title of post, so if someone edits the title, the post-back of the Model object no longer represents a discover-able object in my database. I feel like there is a really easy solution to this, but I've come to a standstill.

Essentially what I feel like I need to do is have two objects, one for preserving the original data, and one to populate the form for user editing. I'm not sure if that's frowned upon, or what the right way to do that is. 

Originally I tinkered with sending the original data to the View as a serialized JSON object, and posting it back with the form. However, that doesn't feel very clean to me, and I imagine there's a way to do it within the framework itself.

**View**

```
@model appname.Models.HomeModel

<h2>Edit</h2>
@using (Html.BeginForm()){
<fieldset>
    <legend>HomeModel</legend>
    <div class="editor-label">
        @Html.LabelFor(model => model.Title)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Title)
    </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.News)
    </div>
    <div>
        @Html.TextAreaFor(model => model.News, new{cols=25, @rows=5})
    </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.Office)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Office)
    </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.NewsDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.NewsDate)
    </div>
    <p>
        <input type="submit" value="save" />
    </p>
    </fieldset>
}

```

**Controller Snippet**

```
    public ActionResult Edit(DateTime date, String title)
    {
        HomeModel model = context.NewsData.Where(x => x.NewsDate == date && x.Title == title).Select(x =>
            new HomeModel(){
                News = x.News,
                Office = x.Office,
                NewsDate = x.NewsDate,
                Title = x.Title
            }).SingleOrDefault();

        return View(model);            
    }
    [HttpPost]
    public ActionResult Edit(HomeModel model)
    {
        try
        {
            //This is where it breaks if someone changes the title or date
            //as there's no object in the database matching this query.
            NewsData news = context.NewsData.Where(x => x.NewsDate == model.NewsDate && x.Title == model.Title).Single<NewsData>();
            news.Title = model.Title;
            news.Office = model.Office;
            news.News = model.News;
            news.NewsDate = model.NewsDate;
            context.SubmitChanges();
            return RedirectToAction("Index");
        }
        catch
        {
            return View(model);
        }
    }

```