Это зависит от того, какую версию EF вы используете, и даже если бы я знал, какую версию возможности по-прежнему безграничны. :) Я приведу несколько примеров.
Версия 1.0
public void Update(User user)
{
using (var context = new ObjectContext(""))
{
user.Blog = GetBlog(user.Id);
context.ApplyPropertyChanges("User", user);
}
}
private Blog GetBlog(int userId)
{
using (var context = new ObjectContext(""))
{
return (from u in context.Users
where u.Id == userId
select u).FirstOrDefault();
}
}
В версии 2 и POCO:
public class User
{
public virtual int Id { get; set; }
public virtual Blog Blog { get; set; }
public void AddEntry(Entry entry)
{
if (Blog.Entries == null)
Blog.Entries = new List<Entry>();
entry.Blog = Blog;
Blog.Entries.Add(entry);
}
}
public class Blog
{
public virtual int Id { get; set; }
public virtual IList<Entry> Entries { get; set; }
}
Тогда, конечно, существует множество опций, использующих значения EntityKey, загрузку ссылок и т. Д. Я, как правило, использую самый простой вариант из имеющихся.
РЕДАКТИРОВАТЬ: Хорошо, получил ваш вопрос. MVC очень простителен, если вы относитесь к нему правильно. Я бы начал со следующего: Когда вы создаете свой список выбора, это нормально:
ViewData["service_id"] = new SelectList(cats, "id", "name", selectedService);
Но для правильного использования этого списка выбора в MVC вы можете назначить его следующим образом:
<%= Html.DropDownList("Service.Id", (IEnumerable<SelectListItem>)ViewData["service_id"])%>
Здесь следует отметить Service.Id . Это означает, что любое значение, выбранное в раскрывающемся списке, будет присвоено Platform.Service.Id. Когда вы сохраните свои изменения, Entity Framework сделает всю работу за вас.