c# - EF4 and MVC3 mapping ViewModels to Entities -


i have ef4 entity workgroup. below meta-data model reference.

    [metadatatype(typeof(workgroupmetadata))] public partial class workgroup {     public contact manager { get; set; } }  [bind(exclude = "id")] public class workgroupmetadata {     [scaffoldcolumn(false)]     public int id { get; set; }      [displayname("org. number")]     [required(errormessage = "org. number required.")]     public string org_number { get; set; }      [displayname("workgroup name")]     [required(errormessage = "workgroup name required.")]     public string name { get; set; }      [displayname("customer contact")]     public int customer_contact_id { get; set; }      [displayname("manager")]     public int manager_id { get; set; }      [displayname("tech. lead")]     public int lead_id { get; set; }      [displayname("time approver")]     public int time_approver { get; set; }      [displayname("description")]     public string description { get; set; }      [scaffoldcolumn(false)]     public object created_at { get; set; }      [scaffoldcolumn(false)]     public object last_modified_at { get; set; } } 

i've got viewmodel defined as:

    public class workgroupviewmodel {     public workgroup workgroup { get; set; }     public list<workgroup> workgroups { get; set; } } 

on view have grid dump out workgroups available. works wondering how convert id fields actual strings table. manager, customer_contact, lead references contact entity. show names contacts instead of id.

how can accomplished? i've looked around bit can't seem find suggestion or answer. maybe looking @ wrong perspective?

you might consider using wrapper around workgroup (decorator pattern) or tuple or creating custom class binds them together.

public class workgroupdisplaymodel {     public workgroup workgroup { get; set; }     public manager manager { get; set; }     // add additional properties each related type } 

in ef query can like:

var query = w in context.workgroups             join m in context.managers                 on w.manager_id equals m.uid             // additional joins each related table             w.description == "project 1" // whatever criteria             select tuple.create(w, m); // add param each type             //or             //select new workgroupdisplaymodel { workgroup = w, manager = m, ... }; var list = query.tolist(); var contact = list[0].item1; // tuple has typed item1 thru itemn var manager = list[0].item2; 

then view model have:

list<tuple<workgroup, manager, customer, lead>> workgroups { get; set; } 

or

list<workgroupdisplaymodel> workgroups { get; set; } 

Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -