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
Post a Comment